单击选项卡需要在进入单击的选项卡之前回答警报 - iPad编程

时间:2012-10-24 03:42:02

标签: objective-c ios ipad

我的屏幕上有很多标签,我想给出一个警告框,上面写着“你想保存更改吗?”如果用户更改了页面中的任何内容,而没有单击页面中提供的保存按钮,则他会单击diff选项卡。 我可以获取警报视图,但是单击选项卡会将屏幕移动到单击的选项卡。在应答警报视图之前,屏幕不应更改。

任何人都可以让我知道如何取消屏幕更改,直到应答警报视图?

2 个答案:

答案 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;
      }
}