【问题标题】:Pop from one View Controller to another in a different navigation controller在不同的导航控制器中从一个视图控制器弹出到另一个视图控制器
【发布时间】:2020-10-04 18:21:20
【问题描述】:

我正在尝试将视图控制器 VC1 从一个导航控制器 NC1 弹出到另一个导航控制器 NC2 中的另一个视图控制器 VC2。

我正在使用 VIPER 架构,因此在不同导航层次结构中的不同视图控制器之间进行路由需要我必须切换到我想要呈现的导航控制器的根目录。

所以这里的问题是,在导航到第二个导航控制器 NC2 的视图控制器 VC2 之后,我想回到第一个导航控制器 NC1 中的第一个视图控制器 VC1。

我尝试了以下方法:

 self.navigationController?.popViewController(animated: true)

 navigationController?.dismiss(animated: true, completion: nil)

 view.window?.rootViewController?.dismiss(animated: true, completion: nil)

 self.navigationController?.popToRootViewController(animated: true)

但没有一个对我有用。有什么想法吗?

【问题讨论】:

  • 我不确定我是否能完全理解您的问题,如果您想更改窗口的根视图控制器,您可以关闭当前的 VC1 并将 NC2 设置为窗口的根视图控制器?
  • 您可以通过创建一个新的单例类(如AppNavigationFlow)来管理应用程序的所有导航流程。而那个单例类你可以存储你的两个 navigationController 对象。
  • 对于您的解决方案,您是否可以将所有视图控制器的更多代码或结构放置到您尝试关闭的屏幕上。
  • 您的问题不太清楚...您是否有一个 presented NC1(即,在当前视图控制器上以模态方式呈现)当前显示 @987654324 @ 并且您想点击一个按钮导航到显示 VC2NC2
  • @DonMag,我刚刚编辑了这个问题,我认为这应该更清楚,我想回到第一个导航控制器 NC1 中的第一个视图控制器 VC1,但是因为我没有展示第二个 VC2 模态,我不能只关闭第二个导航控制器 NC2 中的视图控制器 VC2

标签: ios swift uinavigationcontroller swift5


【解决方案1】:

请试试这个代码:

let viewControllers = self.navigationController?.viewControllers

for vc in viewControllers! {

   if vc is VC1 {
      self.navigationController?.popToViewController(vc as! VC1, animated: true)
   }
}

【讨论】:

  • 我不是以模态方式呈现,我正在推动导航控制器,我不能只是解雇
猜你喜欢
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
相关资源
最近更新 更多