我有一个导航栏(不是导航控制器导航栏)。在左侧,我拖动了一个Bar Button项目,并使用IBActon将其连接到我的视图控制器。该行动执行:
navigationController?.popViewController(animated: true).
同样,我在层次结构中嵌入了导航控制器,但我隐藏了导航控制器导航栏并使用了我自己的导航控制器。我不确定这是否与它有关。但是Bar Button Items动作并未始终如一地执行。有时当我点击它时,视图会弹出(删除),而其他时候根本没有任何反应。如果有人经历过这个并且有任何见解我会非常感激!
相关守则:
@IBAction func backTapped(_ sender: Any) {
navigationController?.popViewController(animated: true)
}
答案 0 :(得分:0)
所以我发现了问题。这是我在视图控制器之间进行隔离的方式。要导航到我正在使用的应用程序
let storyboard = UIStoryboard(name: "Settings", bundle: nil)
let viewControllerSettings = storyboard.instantiateViewController(withIdentifier: "SettingsID") as! SettingsViewController
self.show(viewControllerSettings, sender: self)
然而这就是问题所在。要在保持与故事板中导航控制器的连接的同时正确导航到新故事板,您必须转到导航控制器本身。所以它应该像:
let storyboard = UIStoryboard(name: "Settings", bundle: nil)
let viewControllerSettings = storyboard.instantiateViewController(withIdentifier: "SettingsNavControllerID") as! UINavigationController
self.show(viewControllerSettings, sender: self)
通过这种方式,我们在故事板中的导航控制器中添加了一个storyboardID,您可以通过它进行操作。如果没有通过导航控制器进行划分,则无法执行
navigationController?.popViewController(animated: true).
因为导航控制器未正确加载。