Ios 为未重新加载的节调用的numberOfRowsInSection
在我的tableview中,当section==0时,如果所有部分都没有项目,我将为用户插入一行帮助文本Ios 为未重新加载的节调用的numberOfRowsInSection,ios,swift,Ios,Swift,在我的tableview中,当section==0时,如果所有部分都没有项目,我将为用户插入一行帮助文本 func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{ 如果myArray.flatMap({$0}).count==0&§ion==0{ 返回1//以便显示空行帮助器文本 }否则{ 返回myArray[节].count } } 当允许用户手动删除行时,除了第0节中没有行,而我正在删除其他地方唯一
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
如果myArray.flatMap({$0}).count==0&§ion==0{
返回1//以便显示空行帮助器文本
}否则{
返回myArray[节].count
}
}
当允许用户手动删除行时,除了第0节中没有行,而我正在删除其他地方唯一剩余的行(比如第1节)的情况外,这一切都很好。在这种情况下,不会显示帮助文本
在删除时,我为第1节调用reloadSections
myTableView.reloadSections([indexPath.section],带:.fade)
我还尝试了deleteRow,得到了相同的行为
myTableView.deleteRows(位于:[indexPath],带:.fade)
使用上述任一选项,我会遇到崩溃:
'无效更新:节0中的行数无效。人数
更新(1)后现有节中包含的行必须是
等于该节中包含的行数,在
更新(0),加上或减去从中插入或删除的行数
该部分(插入0,删除0)加上或减去
行移入或移出该节(0移入,0移出)。'
我收到错误消息-删除操作未触及节0,现在有一行(在删除之前没有)。但这是怎么发生的/为什么在这种情况下还会调用numberOfRowsInSection(当我故意不重新加载0节时)
如果我只需要一个完整的myTableView.reloadData()-它工作正常,没有崩溃-但是我当然会丢失删除用户正在删除的行的动画
想法
编辑:由于PaulW而解决
问题是,出于布局原因,可以随时为所有部分调用numberOfRowsInSection。同样,如果我正在更新节1以删除最后一项,则节0将在重新加载时返回1。因此,在这种情况下,通过主动重新加载节0,我避免了崩溃
在“删除行”函数中,我现在执行以下操作:
如果tempriderray.flatMap({$0}).count==0{
myTableView.reloadSections([0,indexPath.section],带:.fade)
}否则{
myTableView.deleteRows(位于:[indexPath],带:.fade)
}
numberOfRows(在节中:)
可以随时为任何节调用
tableview需要知道其他部分中有多少行,以便可以根据需要调整滚动视图偏移
您的问题是,由于依赖于myArray
的内容,节0的行计数正在意外更改
更新数组时,如果数组计数已从零更改为非零或从非零更改为零,则还需要重新加载节0。
numberOfRows
可以随时为任何节调用。tableview需要知道其他部分中有多少行,以便可以根据需要调整滚动视图偏移。您的问题是,由于依赖于myArray
的内容,节0的行计数正在意外更改。当你更新数组时,你也需要重新加载第0节。自从我使用类似的东西以来已经有一段时间了,所以请记住我。您要删除的项目(从第1节)是数组中唯一的项目吗?由于消息中说第0节获得了一行,因此我认为您删除了数组中唯一的一项(因此myArray.flatMap({$0}).count==0
),触发numberOfRowsInSection
为第0节返回1。如果是这种情况,我想知道添加对insertRows(at:with:)
或reloadSections(quo:with:)
的调用是否有助于向系统指示新行。您可能需要查看beginUpdates()
和endUpdates()
@Paulw11-谢谢,这就成功了。如果你想就此给出答案,我很乐意接受。我通过检查数组在删除之后,但在重新加载之前是否有零项来解决这个问题。如果是这样,我将重新加载第0节,并使用delete命令重新加载该节。如果不是,则仅删除正在删除的行。非常好。@SteveB如果你解决了这个问题,你介意为社区分享你的最终结果吗:)