暂停代码执行,直到按下UIAlertView按钮?

JoB*_*324 4 iphone ios

我的一个方法向对象发送一条消息(你对此有何了解),并希望得到一个BOOL答案.但是,BOOL回答它的期望是基于在接收对象的方法中创建的UIAlertView的答案.但是,代码在等待用户回答UIAlertView时不会暂停.我的问题是:如何在方法的返回值中使用-alertView:clickedButtonAtIndex?

这是消息运行的代码(在这种结构中,我期望navigateAwayFromTab根据UIAlertView中的用户输入进行更改,但它永远不会有机会):

- (BOOL)readyToNavigateAwayFromTab {
    NSLog( @"message received by Medical View");
    navigateAwayFromTab = NO;
    UIAlertView *alert = [[UIAlertView alloc]
           initWithTitle:@"Navigate Away From Tab?"
                 message:@"Navigating away from this tab will save your work."
                delegate:self
       cancelButtonTitle:@"Cancel"
       otherButtonTitles:@"OK", nil
    ];
    [alert show];
    [alert release];
    return navigateAwayFromTab;
}
#define CANCEL 0
#define OK 1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if( buttonIndex == OK ) navigateAwayFromTab = YES;
}
Run Code Online (Sandbox Code Playgroud)

我一直在阅读模态UIAlertView辩论,我同意苹果的实现 - 至少作为规则.但是,在这种情况下,我没有看到通过将代码放在-alertView:clickedButtonAtIndex中解决问题的任何方法,因为我不需要运行基于UIAlertView的代码,我只需要阅读响应.关于如何达到我的监狱的任何建议?我已经在[alert show]之后尝试了一段时间循环,但随后警报甚至没有显示,并且出于多种原因我无法使用-viewWillDisapear.

编辑

对于那些在现代ios时代观看这个问题的人来说,这个问题与ios 2有关

Ste*_*her 10

UIAlertView的节目不仅没有等待用户触摸按钮,它甚至不等待警报视图淡入视图.它会立即返回.

为您的班级添加一个标志.如果为NO,则从readyToNavigateAwayFromTab返回NO并显示您的警报.在clickedButtonAtIndex中,设置标志,以便readyToNavigateAwayFromTab知道返回YES.仍然在clickedButtonAtIndex中,从代码重试选项卡导航.