我有一个Swift项目。
UINavigationViewController
内有UITabBarController
。当点击负责显示导航视图控制器两次的选项卡时,它会跳回导航的根视图控制器。
如何使用swift禁用此功能?
NB。我使用UITabBarControllerDelegate看过Objective C实现,但我不认为我在Swift中做了正确的事。
感谢。
答案 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中进行之间一定没有什么大不同。
以下是您可能需要尝试的几个简单步骤:
检索标签栏控制器: 我不知道您应用的UI结构,但您应该能够轻松地从代码中获取标签栏控制器。如果你以编程方式创建它,或者只是关键窗口的rootViewController,如果你拖动它,它可能是一个属性。把它放到主要的故事栏上。
只要该类符合UITabBarControllerDelegate协议,就将标签栏控制器的委托分配给您想要的任何类的实例。
实现tabBarController:上面提到的shouldSelectViewController:方法,以决定选择标签时应显示的内容。
如果您可以提供一些代码,我也可以通过示例向您展示如何制作代码。
祝你好运。