tableview trailingSwipeActionsConfigurationForRow在ios11中破解

phú*_*iển 5 tableview ios11

我在IOS11中使用trailingSwipeActionsConfigurationForRowAt但是当刷卡多次然后应用程序破解.

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let delete = UIContextualAction(style: .normal, title: "Delete") { action, view, completionHandler in
      print("Deleting!")
      completionHandler(false)
    }
    delete.backgroundColor = UIColor.red
    let config = UISwipeActionsConfiguration(actions: [delete])
    config.performsFirstActionWithFullSwipe = false
    return config
  }
Run Code Online (Sandbox Code Playgroud)

还有一些错误

 *** Assertion failure in -[UISwipeActionController swipeHandlerDidBeginSwipe:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3694.4.18/SwipeActions/UISwipeActionController.m:268
 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'No occurrence for index path (null)'
Run Code Online (Sandbox Code Playgroud)

Pal*_*nak 0

TL;DR - 查看您在两次滑动之间是否正在对数据执行某些操作(例如重新加载)。


当我滑动删除一个单元格(使其处于编辑模式 - 删除操作可见)然后尝试滑动另一个单元格导致我的应用程序崩溃时,我遇到了类似的问题。就我而言,这是因为在两次滑动之间重新加载表数据。

滑动删除手势调用willBeginEditingRowAtIndexPath和对象didEndEditingRowAtIndexPath上的方法UITableViewDelegate。在后一种情况下,我打电话给tableView.reloadData(). 当我滑动删除其他单元格时,我得到了didEndEditingRowAtIndexPath为第一个单元格调用的方法(也重新加载数据),就在该系统调用willBeginEditingRowAtIndexPath另一个单元格之后,数据不同步,UIKit 崩溃了。

当我删除在方法中重新加载数据的代码时,didEndEditingRowAtIndexPath我的应用程序将不再崩溃:)