已经有一段时间了,因为我搞砸了我的TableViewController,所以我有点生疏......但现在我想设置它,以便当一个部分有零行显示(数组为空)然后它将“撒谎”到控制器并为numberOfRowsInSection返回1。然后在cellForRowAtIndexPath中,它将在一行的单元格上放置一个UILabel,表示“此部分为空”的效果。
问题是当表处于编辑模式并且用户删除最后一行时,我收到以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的行数无效。更新后的现有部分中包含的行数(1)必须等于更新前该部分中包含的行数(1),加上或减去从该部分插入或删除的行数(插入0,删除1)。
在尝试重绘表时,在刷卡到删除行之后,发现最后一行仍然存在,似乎很不高兴。我应该在哪里/如何处理这个?当然,我在某种程度上捣乱遍布Apple的HIG,但是对于我的用户而言,只有一个空白部分的标题会让我感到困惑......
谢谢!
答案 0 :(得分:0)
您需要使用-insertRowsAtIndexPaths:withRowAnimation:
实际插入“假”行。从UITableView的角度来看,没有“真实”行或“虚假”行。数据源说有任何行。所以你有1行,然后你删除了1行,然后UITableView问你“有多少行”,你说1,而UITableView说“1 - 1 = 1.等等,什么?Blam。”
如果你想插入一行(“真实”或“假”都是一样的),你需要告诉UITableView你正在插入它。