【问题标题】:prepare for segue programmatically with error: no segue with identifier '<value>'' [duplicate]以编程方式准备转场,但出现错误:没有标识符为“<值>”的转场 [重复]
【发布时间】:2019-11-20 17:57:29
【问题描述】:

我正在开发我的第一个没有情节提要的 iOS 项目,我在尝试转到另一个视图控制器时遇到了这个问题。非常感谢帮助了解为什么会发生此问题。我需要在某处定义segue吗?谢谢!

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'接收者 () 没有标识符的segue 'goToYViewController''

这就是我所拥有的:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "goToYViewController") {
        if let yInfo = segue.destination as? YViewController {
            yInfo.row = "hello"
        }
    }
}

// in data source

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.performSegue(withIdentifier: "goToYViewController", sender: self)
}

【问题讨论】:

标签: ios swift


【解决方案1】:

由于您没有使用storyboard,因此您必须像这样以编程方式推送/呈现YViewController 实例,

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let yInfo = YViewController()
    yInfo.row = "hello"
    self.present(yInfo, animated: true, completion: nil)
}

在上面的代码中,yInfo呈现。如果您想在导航堆栈推送yInfo,请使用pushViewController(_:animated:)

self.navigationController?.pushViewController(yInfo, animated: true)

【讨论】:

    【解决方案2】:

    如果你没有故事板,恐怕你不能在这里使用 segue。如果您想以编程方式执行,您可以使用 push 或 present 来显示第二个视图控制器。

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let YVC = YViewController()
        self.present(YVC, animated: true)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-30
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多