繁体   English   中英

标签栏,点按“根视图控制器”

[英]Tab bar, tap to Root View Controller

我有一个Swift项目。

它在UITabBarController内部具有UINavigationViewController 轻击负责两次显示“导航视图控制器”的选项卡时,它将跳回到Nav的根视图控制器。

如何使用Swift禁用此功能?

NB。 我已经看到了使用UITabBarControllerDelegate的Objective C实现,但是我认为我在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)
}

实现它的正确方法是使用UITabBarControllerDelegate协议的tabBarController:shouldSelectViewController:方法。 我在这里看到的问题是您不确定在哪里设置委托。 在Objective C或Swift中进行的操作之间应该没有太大的区别。

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

  1. 检索选项卡栏控制器:我不知道您的应用程序的UI结构,但是您应该能够从代码轻松获得选项卡栏控制器。 如果以编程方式创建它,则可能是一个属性;如果将其拖放到主故事栏,则可能只是键窗口的rootViewController。

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

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

如果您可以提供一些代码,我也可以通过示例向您展示如何实现。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM