从alertview委托方法返回BOOL值: - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

时间:2012-01-13 07:28:19

标签: iphone ios uitabbarcontroller uialertview

我在MainWindow.xib上添加了一个tabbar控制器,它显示了5个选项卡,并且我的app委托中有标签栏控制器的委托方法:shouldSelectViewController,它返回布尔值(YES或NO)。

在此委托方法中,我向用户显示警告(如果用户从选项卡1转到任何其他选项卡)。此警报包含2个按钮:确定和取消。

如果用户点击OK,那么我希望委托方法返回YES(以便用户可以转到其他标签),如果用户选择了Cancel(如果他只想留在标签1上),那么我想要返回NO的方法

所以,基本上我希望shouldSelectViewController方法停止执行,直到屏幕上出现时间警报。有没有什么方法可以从我的警报视图的委托方法返回BOOL,这可能反过来由shouldSelectViewController或任何可能用于这种情况的线程解决方案返回?

1 个答案:

答案 0 :(得分:2)

试试这个

in .h

UIViewController *tmpController;

in .m

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
tmpController = viewController;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
return NO;
}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex) {
    self.tabBarController.selectedViewController = tmpController;
}
}