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!
4 comments:
Hi,
Where is the code of
MySleepMilli(10); function ?
thanks,
Hi!
That is just a simple function that wraps-around nanosleep ...
http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man2/nanosleep.2.html
I just did a quick look and found various example usages of nanosleep... very easy to use.
Hoping that helps!
Best wishes,
Pete
Many thanks for your post! Helped me a lot!
Happy to help! :)
Post a Comment