当numberOfRowsInSection等于零时,强制调用cellForRowAtIndexPath

时间:2014-03-07 03:52:27

标签: ios objective-c cocoa-touch uitableview

即使cellForRowAtIndexPath == 0,我也希望numberOfRowsInSection始终被调用,因为我正在隐藏并通过将numberOfRowsInSection设置为零而在表格中显示一个部分,但是当我这样做时上面描述的方法没有执行,因为numberOfRowsInSection变为零,这会产生问题,因为尽管节标题消失,仍然呈现单元格的内容,任何关于如何在设置{{后隐藏单元格内容的想法“ 1}}到零:

numberOfRowsInSection

假设- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section==0||section==1) return 1; if (section==2) { if (self.isSectionAppears) return 1; else return 0; } } 是bool属性,当我想要隐藏该部分时将其设置为false

1 个答案:

答案 0 :(得分:0)

你不应该在你的cellForRowAtIndexPath中隐藏显示/隐藏逻辑的部分。当您需要告诉tableview更新节标题时,可以使用代码

对节进行刷新
NSUInteger sectionToRefresh = //index of table section with header you want to refresh.
NSIndexSet indexSetWithSection = [NSIndexSet indexSetWithIndex:sectionToRefresh];
[tableView reloadSections:indexSetWithSection withRowAnimation:UITableViewRowAnimationAutomatic];

如果您想刷新节标题的可视元素而不刷新本节的其余部分,可以通过直接处理节标题对象来实现:

//Get section header from table
UITableViewHeaderFooterView* myHeader = [tableView headerViewForSection:sectionToRefresh];

//Update header
[myHeader.textLabel setText:newSectionHeaderText]; //Update it's text for example.