【问题标题】:Coming back to UIViewController doesn't trigger segue回到 UIViewController 不会触发 segue
【发布时间】:2018-11-19 12:11:48
【问题描述】:

我有控制器 B,它使用委托模式将数据发送回控制器 A,但由于某种原因我的 segue 没有触发。

有什么东西阻止了我的 segue 被触发吗?我该如何解决这个问题?

控制器 B - 模态显示

@IBAction func addButton(_ sender: Any) {
        delegate?.select(sID: selectedID)
        dismiss(animated: true, completion: nil)
    }

控制器A

func select(sID: String) {
        performSegue(withIdentifier: "editSegue", sender: self);
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "editSegue" {
            if let destinationVC = segue.destination as? NewController {
                destinationVC.selectedQueryID = selectedQueryID;
                print(“test”);
            }
        }
        if segue.identifier == "selectSegue" {
            if let destinationVC = segue.destination as? ControllerB {
                destinationVC.queryID = selectedQueryID;
                destinationVC.delegate = self;
            }
        }
}

控制器 C - 以模态方式呈现(不呈现自身)

【问题讨论】:

  • NewController Controller-C 吗?你如何展示控制器-B?您是否正确设置了delegate
  • 对不起,我省略了准备函数的一部分。是的,NewController 是控制器 C。我正在正确显示 ContrB,单击 addButton 函数后,它成功将数据发送回 ContrA。

标签: ios swift delegates segue


【解决方案1】:

在 B 视图控制器中,在关闭完成时触发

@IBAction func addButton(_ sender: Any) {

    dismiss(animated: true, completion: {
         delegate?.select(sID: selectedID)
   }
}

还要确保您以模态方式呈现 B 视图控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多