在使用Segue在视图控制器之间传输数据之前。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Edit List" {
if let currentTodo = todoReadyForEditing, let editControler = segue.destination as? ListPageController {
editList.prepare(for: currentList)
}
现在计划已更改,我应该将数据从第一个视图控制器传输到tableViewController
。由于我想在tableViewController
页上有一个导航栏,因此在其之前添加了navigationBarController
。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Edit List" {
if let currentTodo = todoReadyForEditing, let editControler = segue.destination as? ListTableViewController {
editList.prepare(for: currentList)
}
问题是,当我将segue直接连接到UITableViewController时,一切正常,就像之前一样,我有两个视图控制器,但是导航栏被隐藏了,这是我不想要的。如我所读,显然我必须先将segue连接到navigationViewController,但是当我不这样做时,数据将不会传输到表视图控制器。
有什么建议吗?感谢您的提前帮助
答案 0 :(得分:1)
segue的目的地为UINavigationController
,但是您可以使用其topViewController
属性(它是您的控制者)
guard let navCon = segue.destination as? UINavigationController,
let controller = navCon.topViewController as? ListTableViewController else { fatalError("Segue wasn’t set right") }
无论如何,我建议您不要使用segues并以编程方式使用嵌入式控制器创建UINavigationController