1

我实现了 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

不符合我的要求。

4

1 回答 1

1

如果从返回 NOshouldSelectViewController不会取消到其他选项卡的转换,那么您的委托或其他连接错误。检查在执行期间是否实际到达该函数。

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

于 2012-12-30T17:35:26.397 回答