Ios 为未重新加载的节调用的numberOfRowsInSection

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节中没有行,而我正在删除其他地方唯一

在我的tableview中,当section==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如果你解决了这个问题,你介意为社区分享你的最终结果吗:)