我是靠谱客的博主 潇洒大白,最近开发中收集的这篇文章主要介绍编辑 UITableView 出现的错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

‘Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (7) must be equal to the number of rows contained in that section before the update (7), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).’

意思就是说,在你删除一行的时候,没有更新 tableView 对应的
tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
这个方法。

这是很合情合理的。假如你有 8 行的一个列表,和一个含有 8 个元素的数组。这个数组就是这个列表的源。在你删除了一行后,这时列表需要刷新(自动),这时会请求这个列表的行数,返回的还是 8,跟现在的行数 7 并不对应。
原因是在你删除了一行后,没有删除相应的源数组的数据,导致列表在询问行数的时候得到的还是 8,跟现在的 7 冲突,才会出现这个错误,所以在删除行的前面先把数据删除。

    override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
        let deleteRow = UITableViewRowAction(style: .destructive,
                                             title: "Del") { (deleteRow, indexPath) in
                                                self.lotteries.remove(at: indexPath.row) // 先删除数据
                                                tableView.deleteRows(at: [indexPath], with: .right) // 再删除行
        }
        return [deleteRow]
    }

最后

以上就是潇洒大白为你收集整理的编辑 UITableView 出现的错误的全部内容,希望文章能够帮你解决编辑 UITableView 出现的错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部