以编程方式为错误做准备:没有标识符为'<value>'的segue

时间:2019-07-11 05:13:14

标签: ios swift

我正在开发第一个没有情节提要的iOS项目,并且在尝试选择另一个View Controller时遇到了这个问题。非常感谢您了解为什么会发生此问题。我需要在某处定义segue吗?谢谢!

  

由于未捕获的异常而终止应用程序   “ NSInvalidArgumentException”,原因:“接收器   ()没有带有标识符的关键字   '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)
}

2 个答案:

答案 0 :(得分:1)

由于您没有使用storyboard,因此必须像这样以编程方式 push / present 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)

答案 1 :(得分:1)

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

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