如何在保持后退按钮的同时重新加载navigationController视图?

时间:2018-02-16 15:02:01

标签: ios swift

我正在开发一个笔记应用程序,我希望能够通过按下视图上的按钮来关闭并重新打开已经打开的NewNoteViewController(最初由UINavigationView中的RootViewController调用)。在上一个问题中,通过用户 Sh_Khan 的帮助,我可以重新加载NewNoteViewController。以下是我使用的代码:

let currentView  = self.storyboard?.instantiateViewController(withIdentifier: "newNote")

self.navigationController?.setViewControllers([currentView ], animated: true)

但是,当视图重新加载后退按钮返回RootViewController时就消失了。有没有办法在保持后退按钮的同时执行此操作?

1 个答案:

答案 0 :(得分:0)

您应该检索导航控制器的当前backstack,从中删除最后一个控制器,附加新实例化的控制器并将此新阵列设置为导航控制器的视图控制器。

if let currentView = self.storyboard?.instantiateViewController(withIdentifier: "newNote"),
    let vcsWithoutLast = self.navigationController?.viewControllers.dropLast() {
    let newVcs = Array(vcsWithoutLast) + [currentView]
    self.navigationController?.setViewControllers(newVcs, animated: true)
}