标签栏,点击Root View Controller

时间:2015-09-12 11:34:21

标签: ios xcode swift

我有一个Swift项目。

UINavigationViewController内有UITabBarController。当点击负责显示导航视图控制器两次的选项卡时,它会跳回导航的根视图控制器。

如何使用swift禁用此功能?

NB。我使用UITabBarControllerDelegate看过Objective C实现,但我不认为我在Swift中做了正确的事。

感谢。

2 个答案:

答案 0 :(得分:2)

Swift 3.0

add UITabBarControllerDelegate to master class

override func viewDidLoad() {
    tabBarController?.delegate = self  
}

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
     _ = navigationController?.popToRootViewController(animated: true)
}

答案 1 :(得分:0)

实现它的正确方法是使用UITabBarControllerDelegate协议的tabBarController:shouldSelectViewController:方法。我在这里看到的问题是你不确定在何处设置委托。在Objective C或Swift中进行之间一定没有什么大不同。

以下是您可能需要尝试的几个简单步骤:

  1. 检索标签栏控制器: 我不知道您应用的UI结构,但您应该能够轻松地从代码中获取标签栏控制器。如果你以编程方式创建它,或者只是关键窗口的rootViewController,如果你拖动它,它可能是一个属性。把它放到主要的故事栏上。

  2. 只要该类符合UITabBarControllerDelegate协议,就将标签栏控制器的委托分配给您想要的任何类的实例。

  3. 实现tabBarController:上面提到的shouldSelectViewController:方法,以决定选择标签时应显示的内容。

  4. 如果您可以提供一些代码,我也可以通过示例向您展示如何制作代码。

    祝你好运。