防止自定义UITabBarController更改Tab

时间:2014-03-14 16:04:25

标签: ios uitabbarcontroller

如何根据条件阻止标签被点击?我尝试了几件事,我可能错过了一些基础知识。

我有一个实现UITabBarController的UITabBarCustomController。在viewDidLoad中,根据条件,我将selectedIndex强制为1,这是有效的。

然而,我无法阻止用户离开此标签。我试图在另一个与我的UITabBar链接的ViewController上设置一个UITabBarControllerDelegate,我实现了- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController,最后我还尝试在我的自定义UITabBarCustomController上实现这个委托和方法。但在这两种情况下,当我点击另一个选项卡时,没有任何反应,用户可以访问该选项卡(这些方法中的NSLog不会在调试中显示)。

有什么想法?感谢。

//编辑:委托方法中的测试代码:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    NSLog(@"test");
    return NO;
}

1 个答案:

答案 0 :(得分:1)

这是阻止/阻止Tabbar项目在tabbar项目上单击

切换选项卡的方法

适用于Swift 3.0

确保您已实施 UITabBarControllerDelegate 并将 UITabbarController 委托 设置为

然后在控制器中覆盖此委托

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    if viewController == tabBarController.viewControllers?[2] {
        return false
    } else {
        return true
    }
}