tableview trailingSwipeActionsConfigurationForRow在ios11中破解

问题描述 投票:5回答:3

我在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
  }

还有一些错误

 *** 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)'
tableview ios11
3个回答
0
投票

TL; DR - 看看你是否在滑动之间对数据进行了某些操作(例如重新加载)。


当我滑动删除一个单元格(让它处于编辑模式 - 删除操作可见)然后尝试刷另一个导致我的应用程序崩溃时,我有类似的问题。在我的情况下,这是因为在这些滑动之间重新加载表数据。

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

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


0
投票

你需要实现tableView(_:editActionsForRowAt:)

至少,返回空数组,但不是qazxsw poi:

nil

0
投票

我只是使用UIViewController + UITableViewDataSource和UITableViewDelegate组合而不是使用UITableViewController进行滑动问题。

© www.soinside.com 2019 - 2024. All rights reserved.