无效更新:iOS 中第 0 部分的行数无效

Posted

技术标签:

【中文标题】无效更新:iOS 中第 0 部分的行数无效【英文标题】:Invalid update: invalid number of rows in section 0 in iOS 【发布时间】:2014-06-18 05:38:16 【问题描述】:

我正在尝试通过单击按钮来隐藏和显示每个部分中的表格视图单元格。我已阅读有关此问题的所有相关问题,但我看不到任何与我的问题相关的答案。一个一个地隐藏它们没有问题(意味着不是两者),但是当单元格中的其他部分被隐藏(删除/没有单元格)时,我单击按钮。我有这个错误:

-[UITableView _endCellAnimationsWithContext:] 中的断言失败,/SourceCache/UIKit_Sim/UIKit-2935.137/UITableView.m:1368 2014-06-18 13:20:26.560 Head2Head[2001:60b] 无效更新:第 0 节中的行数无效。更新 (2) 后现有节中包含的行数必须等于行数更新前包含在该节中的行数 (0),加上或减去从该节插入或删除的行数(0 插入,0 删除),加上或减去移入或移出该节的行数(0 移入, 0 移出)。

这是我的代码:

-(void) commentButtonClicked:(id) sender
UIButton *btn = (UIButton *) sender;
indexClicked = btn.tag -1;

if (!commentClicked) 
    commentClicked = YES;
else
    commentClicked = NO;


@try 
    [tableView1 beginUpdates];
    [tableView1 reloadSections:[NSIndexSet indexSetWithIndex:btn.tag-1] withRowAnimation:UITableViewRowAnimationFade];
    [tableView1 endUpdates];


@catch (NSException *exception) 
    NSLog(@"%@", exception);

@finally 


还有……

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
NSString *numberOfRows = [commentsArray objectAtIndex:section];

if (commentClicked && indexClicked == section) 
    return 0;
else
    return [numberOfRows integerValue];

【问题讨论】:

您是否尝试第二次调试和记录commentClickedindexClicked[numberOfRows integerValue] 的值? 小代码建议:将你的第一个if语句替换为commentClicked = !commentClicked; Himashu Joshi 我有 log commentClicked 和 indexClicked。当我单击按钮(删除 tableview 单元格)时,commentClick 的值为 1,indexClicked 的值为 0。当我在 uitableview 的第一部分再次单击按钮(显示单元格)时,两者都变为 0。值[numberofRows intValue] 是 5,2,5,2。我把日志放在 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section Marc Mosby- 代码不起作用。不过谢谢你的回答 如果单击按钮进行隐藏,我将返回 0 作为行数,如果单击按钮进行显示,则返回数组数。在 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 函数中。 【参考方案1】:

我认为您需要重新加载这两个部分。已经隐藏的和要隐藏的。

【讨论】:

我尝试重新加载这两个部分。并有另一个错误。单击按钮时,这两个部分都隐藏并显示。 那个异常还是来了还是消失了? 您是否存储了以前隐藏的部分索引并重新加载该部分?你可以发布你更新的代码吗? 每个部分都有单独的评论按钮吗?可以一次隐藏多个部分吗?如果是这种情况,您需要为每个部分维护单独的 commentClicked 状态。 有没有办法实现这个?

以上是关于无效更新:iOS 中第 0 部分的行数无效的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8:从 NSFetchedResultsController 的委托中捕获异常,无效更新:第 0 节中的行数无效

部分错误Swift中的行数

无效更新:第 0 节中的无效行数。更新后现有节中包含的行数 (3)

tableView.reloadRows(at:[indexPath],带有:.none)会像这样崩溃吗?

NSInternalInconsistencyException 原因:'无效更新:第 0 节中的行数无效'

使用Swift 3和CoreData删除表视图行