重新打开选项卡时返回视图层次结构中的初始 ViewController
Posted
技术标签:
【中文标题】重新打开选项卡时返回视图层次结构中的初始 ViewController【英文标题】:Return to initial ViewController in view hierarchy when tab is reopened 【发布时间】:2019-01-18 06:26:26 【问题描述】:我目前遇到UITabBarController
s 和UINavigationControllers
的问题。
假设我的UITabBar
中有 2 个ViewControllers
:
MenuOne
MenuTwo
在MenuOne
上,我有一个指向新ViewController
的按钮; PageOne
。
如果我导航到第一个选项卡 (MenuOne
),然后单击带有推送到 PageOne
的按钮,则选项卡栏仍然存在。如果我点击第二个选项卡 (MenuTwo
) 然后返回到 MenuOne
,我将返回到 PageOne
,这是我在该视图层次结构中停止的地方。
我的理解是这是 Apple 的意图,这就是 UITabBarControllers
与 UINavigationControllers
一起工作的方式,但是当我在 MenuOne
中深入了解一些 ViewController 时,我不希望我的用户在选项卡而不是被重定向到初始的ViewController
。
为了澄清,这就是现在的过程:
MenuOne
> * 点击按钮 * > PageOne
> * 点击标签 * > MenuTwo
> * 点击标签 * > PageOne
这就是我希望它的工作方式:
MenuOne
> * 点击按钮 * > PageOne
> * 点击标签 * > MenuTwo
> * 点击标签 * > MenuOne
有人知道我该如何解决这个问题吗?
【问题讨论】:
【参考方案1】:您可以像这样创建自定义UITabBarController
:
class MyTabBarController: UITabBarController, UITabBarControllerDelegate
override func viewDidLoad()
self.delegate = self
// when a controller is selected...
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController)
if let vc = viewController as? UINavigationController
// pop the navigation controller to root VC
vc.popToRootViewController(animated: false)
在情节提要中,将UITabBarController
的类设置为MyTabBarController
。
【讨论】:
哇,这太容易了。谢谢!以上是关于重新打开选项卡时返回视图层次结构中的初始 ViewController的主要内容,如果未能解决你的问题,请参考以下文章