将segue连接到导航控件

时间:2019-03-18 09:49:55

标签: swift uitableview segue

在使用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,但是当我不这样做时,数据将不会传输到表视图控制器。

有什么建议吗?感谢您的提前帮助

1 个答案:

答案 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