我的一个方法向对象发送一条消息(你对此有何了解),并希望得到一个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中,从代码重试选项卡导航.
| 归档时间: |
|
| 查看次数: |
17651 次 |
| 最近记录: |