我的屏幕上有很多标签,我想给出一个警告框,上面写着“你想保存更改吗?”如果用户更改了页面中的任何内容,而没有单击页面中提供的保存按钮,则他会单击diff选项卡。 我可以获取警报视图,但是单击选项卡会将屏幕移动到单击的选项卡。在应答警报视图之前,屏幕不应更改。
任何人都可以让我知道如何取消屏幕更改,直到应答警报视图?
答案 0 :(得分:3)
这并没有直接回答你的问题,但是:你想要做的事情听起来像糟糕的UI设计。 (一般来说,如果你感觉自己正在与UIKit战斗,那么你可能做错了。)
在这种情况下:如果您确实想要确保用户在移动到其他屏幕之前点击“保存”按钮,您应该在模态视图中显示该屏幕,这样就无法导航到任何其他屏幕应用程序的一部分。
换句话说,如果您想阻止用户离开屏幕,不会显示允许他们离开的按钮或标签。否则,你只是为自己做更多的工作并使用户感到沮丧。
答案 1 :(得分:2)
在您的应用代理UITabBarControllerDelegate
applicationDidFinishLaunching
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
self.tabBarController.delegate = self;
[window addSubview:self.tabBarController.view];
}
然后使用下面的委托方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
在Tab键切换之前调用此方法,您可以在此处返回no来禁用它并显示警告消息。一旦用户执行了保存,他可以再次按Tab键,或者您可以编程方式切换到新选项卡,
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
在委托中添加此内容,
如何以编程方式切换到标签
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if () {
//some code
} else {
//some other code
self.tabBarController.selectedViewController = viewController;
}
}