navigationController popToViewController 不能在 swift 3 中工作
Posted
技术标签:
【中文标题】navigationController popToViewController 不能在 swift 3 中工作【英文标题】:navigationController popToViewController not working in swift 3 【发布时间】:2016-11-19 13:10:39 【问题描述】:我想在 swift 3.0 中使用 popToViewController
或 navigationController
。
为此,我在下面编写了代码,但没有按预期工作。
let controllers = self.navigationController?.viewControllers
for vc in controllers!
if vc is HomeViewController
self.navigationController?.popToViewController(vc, animated: true)
我也写了下面的代码,但这也有效。
for vc in controllers!
if vc.isKind(of:HomeViewController.self)
self.navigationController?.popToViewController(vc, animated: true)
请帮我解决这个问题。
【问题讨论】:
您是否检查过 HomeViewController 确实在控制器中?尝试添加断点以查看循环的每次迭代中的视图控制器。 是的,HomeViewController 没有直接在层次结构中。实际上 HomeViewController 已集成在 SlideMenu 中,所以我需要弹出到 SlideMenu... 【参考方案1】:试试这是popToViewController
的代码
斯威夫特 3.0
let controllers = self.navigationController?.viewControllers
for vc in controllers!
if vc is HomeViewController
_ = self.navigationController?.popToViewController(vc as! HomeViewController, animated: true)
【讨论】:
【参考方案2】:斯威夫特 3.1
如果您是 UINavigationController 的扩展,请确保使用 self.popToViewController
而不是 self.navigationController.popToViewController
extension UINavigationController
func popToViewController<T: UIViewController>(withType type: T.Type)
for viewController in self.viewControllers
if viewController is T
self.popToViewController(viewController, animated: true)
return
【讨论】:
【参考方案3】:试试这是你的 popToViewController 代码
更新 Swift 4.2
let controllers = self.navigationController?.viewControllers
for vc in controllers!
if vc is ListViewController
_ = self.navigationController?.popToViewController(vc as! ListViewController, animated: true)
【讨论】:
以上是关于navigationController popToViewController 不能在 swift 3 中工作的主要内容,如果未能解决你的问题,请参考以下文章
通过 NavigationController-TabBarController-NavigationController 以编程方式导航