从UITableViewRowAction

时间:2018-04-11 18:17:38

标签: ios swift segue uitableviewrowaction

我已经阅读了很多关于这个问题的SO帖子,但遗憾的是没有一个答案解决了我的问题。我有一个UIViewController,里面有TableView(我按照这种方式设置了我想要的特定UI格式),截至目前,如果用户向左滑动,{{1 }}和delete按钮显示。我的edit操作正常,但到目前为止我尝试delete的每次迭代都给了我一个edit错误。

我的SIGABRT / terminating with uncaught exception of type NSException课程已添加ViewControllerUIViewControllerUITableViewDataSource个协议。我的tableView(editActionsForRowAt :)函数的代码如下:

UITableViewDelegate

我在SO上找到的所有答案都涉及从我的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] } 到目标屏幕在IB中创建segue的变体,设置segue的标识符,然后使用ViewController调用该segue。 / p>

到目前为止,我已经尝试过:

1

performSegue(withIdentifier:sender:)

2

    if let topController = UIApplication.topViewController() {
        topController.performSegue(withIdentifier: "segueToEditListItem", sender: topController)
    }

3

    self.performSegue(withIdentifier: "segueToEditListItem", sender: self)
  1. 尝试连接 tableView.performSegue(withIdentifier: "segueToEditListItem", sender: tableView) 而不是TableView
  2. 中的segue

    可能还有上面几个变种我删除而不是评论出来。每次点击ViewController时出现SIGABRT错误,我始终将其与错误连接的edit相关联。我检查确保segue连接正确,当我删除任何提及segue我的应用程序工作正常(@IBOutlets按钮打印"编辑轻拍。"),这样让我认为我的edit无法识别我的.swift文件中的segue存在问题。

    我花了几个小时试图解决这个问题并且失败了很多,所以任何帮助/建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

self.performSegue(withIdentifier: "Identifier", sender: self)应该有效。
如果您的问题是@IBOutlets,您应该再次检查您的奥特莱斯 如果您可以在控制台日志中写下崩溃的描述。