我读过很多关于这个问题的帖子,但不幸的是,没有一个答案解决了我的问题。我有一个UIViewController,里面有一个TableView (我按照我想要的特定UI格式设置它),从现在起,如果用户向左滑动,就会出现一个delete和edit按钮。我的delete操作运行良好,但到目前为止,我对edit的每次迭代都给了我一个SIGABRT / terminating with uncaught exception of type NSException错误。
我的ViewController类添加了UIViewController、UITableViewDataSource和UITableViewDelegate协议。我的tableView(editActionsForRowAt:)函数的代码如下所示:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
// Delete action
let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Delete", handler: { (action, indexPath) -> Void in
// Delete action code works fine
})
deleteAction.backgroundColor = GlobalPropertyKeys.LovalyticsRed
let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Edit") {(action, indexPath) -> Void in
// Will explain what I've tried so far below this
print("Edit tapped.")
}
editAction.backgroundColor = GlobalPropertyKeys.LovalyticsBlue
return [deleteAction, editAction]
}我在上面找到的所有答案都涉及从我的ViewController到目标屏幕创建IB中的segue,为segue设置一个标识符,然后使用performSegue(withIdentifier:sender:)调用该segue。
到目前为止,我已经尝试过:
1.
if let topController = UIApplication.topViewController() {
topController.performSegue(withIdentifier: "segueToEditListItem", sender: topController)
}2.
self.performSegue(withIdentifier: "segueToEditListItem", sender: self)3.
tableView.performSegue(withIdentifier: "segueToEditListItem", sender: tableView)TableView而不是从ViewController连接segue可能还有一些我删除的更多的变体,而不是注释掉。每次单击SIGABRT时,我都会得到一个edit错误,我总是将它与错误连接的@IBOutlets联系在一起。我检查了一下,以确保segue是正确连接的,当我删除任何关于segue的内容时,我的应用程序都能正常工作( edit按钮打印"Edit .“),这让我觉得我的ViewController在.swift文件中不识别这个segue存在问题。
我花了好几个小时想办法解决这个问题,但失败得很惨,所以任何帮助/建议都会受到极大的感谢。
发布于 2018-04-11 19:19:55
self.performSegue(withIdentifier: "Identifier", sender: self)应该能工作。
如果你的问题是关于@IBOutlets,你应该再次检查你的店铺。
如果您可以在有崩溃描述的地方编写控制台日志。
https://stackoverflow.com/questions/49781953
复制相似问题