我在MainWindow.xib上添加了一个tabbar控制器,它显示了5个选项卡,并且我的app委托中有标签栏控制器的委托方法:shouldSelectViewController
,它返回布尔值(YES或NO)。
在此委托方法中,我向用户显示警告(如果用户从选项卡1转到任何其他选项卡)。此警报包含2个按钮:确定和取消。
如果用户点击OK,那么我希望委托方法返回YES(以便用户可以转到其他标签),如果用户选择了Cancel(如果他只想留在标签1上),那么我想要返回NO的方法
所以,基本上我希望shouldSelectViewController方法停止执行,直到屏幕上出现时间警报。有没有什么方法可以从我的警报视图的委托方法返回BOOL,这可能反过来由shouldSelectViewController或任何可能用于这种情况的线程解决方案返回?
答案 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;
}
}