小编Mac*_*erT的帖子

使用tableView.deleteRows崩溃(at:,with :)

我正在开发的应用程序存在一个不稳定的问题.我有一个在表视图中显示的轨道数组.在此表格视图中,用户可以向左滑动单个曲目,并显示包含三个项目的菜单.其中一个是删除操作.通过这个动作我遇到了问题.

该菜单在UITableViewDelegate方法中实现:

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?
Run Code Online (Sandbox Code Playgroud)

我使用以下语句检索所选行:

selectedTrack = indexPath.row
Run Code Online (Sandbox Code Playgroud)

然后我使用此代码段进行删除操作:

//Delete the selected track
let deleteAction = UITableViewRowAction(style: .default, title: deleteTitle) { (action, indexPath) -> Void in

    if self.savedTracks.count > 0 {
        self.newTrack = self.savedTracks[self.selectedTrack]
        let albumName = (self.newTrack?.trackName)! + String(describing: (self.newTrack?.trackDate)!)
        self.savedTracks.remove(at: self.selectedTrack)
        self.trackOverviewTable.deleteRows(at: [indexPath], with: .fade)
        self.photoStore.deleteAlbumFromDeletedTrack(with: albumName)
        self.trackOverviewTable.reloadData()
        self.saveTracksToDisk()
    } else {
        self.trackOverviewTable.reloadData()
    }
Run Code Online (Sandbox Code Playgroud)

该程序运行正常,但如果我一个接一个地删除两行,程序崩溃与注释:libc ++ abi.dylib:终止与NSException类型的未捕获异常.

如果我注释掉(或删除)该行:

self.trackOverviewTable.deleteRows(at: [indexPath], with: .fade)
Run Code Online (Sandbox Code Playgroud)

应用程序运行正常,但删除行的动画消失了.有趣的是,应用程序有时可以使用"deleteRows"功能正常运行,但通常不会.我看过几条评论,但我还没有找到正确的答案.

该表没有部分,因此数据源方法:

numberOfSections(in: UITableView)
Run Code Online (Sandbox Code Playgroud)

没有实施.谁能帮助我朝正确的方向发展?

根据Vadian的建议,我尝试将代码段更改为:

    //Delete the …
Run Code Online (Sandbox Code Playgroud)

uitableview ios

5
推荐指数
1
解决办法
3284
查看次数

标签 统计

ios ×1

uitableview ×1