【发布时间】: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];
}
}
【问题讨论】:
-
您是否尝试第二次调试和记录
commentClicked、indexClicked和[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{} 函数中。
标签: ios uitableview