【问题标题】:connect segue to Navigation control将 segue 连接到导航控件
【发布时间】:2019-03-18 09:49:54
【问题描述】:

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

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

【问题讨论】:

    标签: swift uitableview segue


    【解决方案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

    【讨论】:

    • 非常感谢亲爱的罗伯特
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多