同时切换 Tabs 和重置 Nav 的 View Controllers - Swift iOS

Posted

技术标签:

【中文标题】同时切换 Tabs 和重置 Nav 的 View Controllers - Swift iOS【英文标题】:Switch Tabs and Reset Nav's View Controllers at the same time-Swift iOS 【发布时间】:2016-10-16 04:37:26 【问题描述】:

我有一个带有 2 个标签的 tabBarController:

tab0,tab1

在 tab0 我有一个带有 3 个子视图的 navigationController

viewA(根)、viewB、viewC

在 viewC 中按下按钮将使用代码将我带到 tab1

@IBAction func switchButtonTapped(sender: UIButton)
    tabBarController.selectedIndex = 1

我遇到的问题是,一旦我切换到 tab1,我无法让 tab0 重置回 viewA(它的根 vc),它停留在 viewC 上。

如何从tab0切换到tab1,同时重置tab0中的视图?

由于我同时切换选项卡和重置导航控制器的 vcs,这应该发生在不同的线程上吗?

 @IBAction func switchButtonTapped(sender: UIButton)
        tabBarController.selectedIndex = 1
        dispatch_async(dispatch_get_main_queue(), 
self.navigationController?.popToRootViewController(animated:true)
 
    

【问题讨论】:

不,这一切都需要像你现在所做的那样在主线程上发生。一般来说,您尝试做的事情应该有效。您是否尝试将animated 参数更改为false?你真的不想要这里的动画。 @Dima 它可以双向工作。感谢您的帮助???????????? 【参考方案1】:

注意:Swift 3 代码:

@IBAction func switchButtonTapped(sender: UIButton)
    tabBarController?.selectedIndex = 1
    navigationController?.popToRootViewController(animated: true)

这对我来说很好用(它选择第二个选项卡,当我点击第一个选项卡按钮时,它显示第一个选项卡的根 -first- ViewController)。

【讨论】:

我在不同的选项卡中展示了这个实现,作为我对这个问题 (***.com/questions/32716918/…) 的回答,供那些正在寻找该解决方案的人使用。我使用 NSNotifications 来解决这个问题,这样你就可以在代码中的任何地方实现这一点。

以上是关于同时切换 Tabs 和重置 Nav 的 View Controllers - Swift iOS的主要内容,如果未能解决你的问题,请参考以下文章

bootstrap中利用Tag实现多个div的上下页切换

Angular4 nav nav-tabs 样式不起作用

在不更改 URL 的情况下创建 Twitter Bootstrap 'nav-tabs' 菜单 - 可以吗?

从 Ember 视图中删除类名

uniapp使用uni-nav-bar自定义顶部状态栏和导航栏

Bootstrap V3 nav-tabs 完整例子