Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make UIAlertView blocking

I need make UIAlertView blocking. Because i have function and i need to return UIAlertView choice. But problem is that after UIAlertView is shown my function code is executing further so i can't catch UIAlertView choice (i can do it in delegate methods, but i need to return function result).

I tried to make UIAlertVIew blocking with NSCondition. But the code don't works.

condition = [NSCondition new];
result = 0 ; 
[condition lock];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fingerprint" message:@"test" delegate:window_self cancelButtonTitle:@"No" otherButtonTitles:@"Yes",nil];
[alert setDelegate:self];
[alert show];
while (result == 0) [condition wait];
[condition unlock] ;

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
 [condition lock] ;
 if (buttonIndex == 0)
 {
  result = 2; 
 }
 else if (buttonIndex == 1)
 {
  result = 3 ;
 }
 [condition signal] ;
 [condition unlock] ;
}

Maybe how to fix this code or any other suggestions ? Thanks

like image 558
kesrut Avatar asked Sep 20 '10 15:09

kesrut


1 Answers

There's no way to achieve what you want. Only through the delegate. You should redesign your function or refuse using UIAlertView

like image 107
Kostiantyn Sokolinskyi Avatar answered Oct 13 '22 20:10

Kostiantyn Sokolinskyi