【问题标题】:How can I cancel open a view controller in didSelectViewController event of UITabBarControllerDelegate protocol如何取消在 UITabBarControllerDelegate 协议的 didSelectViewController 事件中打开视图控制器
【发布时间】:2010-12-12 12:21:40
【问题描述】:

我实现了 UITabBarControllerDelegate 事件:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    if (viewController == [tabBarController.viewControllers objectAtIndex:0]) {
        //HERE:check some condition and cancel opening the viewController if needed
    }
}

在上述功能中,在检查了一些条件后,我希望应用程序做一些其他事情(即打开另一个视图控制器),而不是打开用户在标签栏项目上选择的正确视图控制器。事件的行为:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

不符合我的要求。

【问题讨论】:

  • shouldSelectViewController 怎么不符合你的需求呢?只需检查您的状况。如果匹配,则执行“其他”部分并返回 NO,否则在该方法中返回 YES。
  • 我想在 bar item 上有灯光效果,并在用户触摸它时打开另一个视图。如果使用 shouldSelectViewController 并返回 NO,则对这些项没有任何影响。

标签: iphone cocoa-touch tabbarcontroller


【解决方案1】:

如果从shouldSelectViewController 返回 NO 并没有取消转换到其他选项卡,则您的代理或其他连接错误。检查函数是否在执行过程中真正被调用。

shouldSelectViewController 中进行测试,返回 NO 并呈现您的其他视图控制器是在选项卡选择中呈现其他视图的正确方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多