我正在开发第一个没有情节提要的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)
}
答案 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)
}