我会尽力解释发生了什么,但如果我能进一步澄清,请告诉我。我自然有多个 View Controller ,在它们之间,我使用 segues 进行转换和传输。以下是我遇到问题的 View 顺序:
- 编辑个人资料 View ;选择查看当前地址
- 显示当前地址 View 。此 View 有后退按钮(从堆栈中弹出 View )
- 返回编辑个人资料 View ,我选择更新当前地址
我选择保存地址并通过 UIAlert 通知保存成功(反射(reflect)在后端)。我在与以下操作相关的 UIAlert 中单击“确定”:
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default){ UIAlertAction inself.basicMap.removeObserver(self, forKeyPath: "myLocation") self.performSegueWithIdentifier("backToEditFromWorkSegue", sender: self)}`
然后我自动返回编辑配置文件。如果我在“编辑个人资料” View 中单击“完成”按钮,该 View 会消失,但会再次显示“更新当前地址”。这就是我想知道为什么会发生以及如何解决的问题。编辑个人资料上的完成按钮链接到此:
self.customNavigationBar.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "addTapped")
addTapped 是:
func addTapped()
{
self.navigationController?.popViewControllerAnimated(true)
}
根据我在这里的想法,我认为弹出 View 出了点问题。
最佳答案
您的代码将从堆栈中弹出当前 View Controller 并向您显示前一个 View Controller 。我想你是想回到 Root View Controller ?如果是这样尝试:
self.navigationController?.popToRootViewControllerAnimated(true)
关于iOS - View Controller 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558757/