2015-09-12 24 views
1

我有一个Swift项目。标签栏,点击根视图控制器

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

如何使用swift禁用此功能?

注意:我已经看到使用UITabBarControllerDelegate的Objective C实现,但我认为我没有在Swift中做正确的事情。

谢谢。

+1

你能发布objC代码,所以我可以为你翻译成斯威夫特? –

+0

@Neo,这是链接http://stackoverflow.com/questions/1849975/prevent-automatic-poptorootviewcontroller-on-double-tap-of-uitabbarcontroller。我不知道在哪里放置代码或在哪里添加委托。 – Orane

回答

0

实现它的正确方法是使用UITabBarControllerDelegate协议的tabBarController:shouldSelectViewController:方法。我在这里可以看到的问题是,您不确定在哪里设置委托。在Objective C或Swift中做这件事绝不会有太大的区别。

以下是你可能需要尝试一些简单的步骤:

  1. 检索标签栏控制器: 我不知道你的应用程序的UI结构,但你应该能够得到标签栏控制器很容易从代码。如果您以编程方式创建它,或者只是将关键窗口的rootViewController拖放到主故事栏,那么它可能是一个属性。

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

  3. 执行上面提到的tabBarController:shouldSelectViewController方法来决定选择选项卡时应显示的内容。

如果你能提供一些代码,我还可以告诉你如何通过例子做出来。

祝你好运。

1

雨燕3.0

add UITabBarControllerDelegate to master class 

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

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