bool bResult = [myUIAlertView runModal];
Rather, the UIAlertView has a show method ... which shows the dialog, but which doesn't simply hang around and give you a result when done.
What you need to do in this situation, is create a delegate to handle the message generated when the UIAlertView button is pressed; and you must then provide you own modal processing loop!
Here is a simplified version of what you need to do. Spot the code loop that makes it all run modally!
// Create an instance of a custom UIAlertViewDelegate that we use to capture // the events generated by the UIAlertView MyUIAlertViewDelegate *lpDelegate = [[MyUIAlertViewDelegate alloc] init]; // Construct and "show" the UIAlertView (message, title, cancel, ok are all // NSString values created earlier in your code...) UIAlertView *lpAlertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:lpDelegate cancelButtonTitle:cancel otherButtonTitles:ok,nil]; [lpAlertView show]; // Run modally! // By the time this loop terminates, our delegate will have been called and we can // get the result from the delegate (i.e. what button was pressed...) while ((!lpAlertView.hidden) && (lpAlertView.superview!=nil)) { [[NSRunLoop currentRunLoop] limitDateForMode:NSDefaultRunLoopMode]; MySleepMilli(10); } // Grab the result from our delegate (via a custom property) int nResult = [lpDelegate result]; // Tidy up! [lpAlertView release]; [lpDelegate release];
Hope that helps!