我有一个使用Storyboard的项目。我有一个带静态单元格和组样式的UITableView。
我需要在一个部分中更改部分文本,具体取决于在分段控件中进行的选择(在另一部分中)
我找到了一些解决方案,表明你应该使用覆盖这个方法:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
并通过调用来触发更新:
[[self tableView]reloadSections:[NSIndexSet indexSetWithIndex:SectionToChange] withRowAnimation:UITableViewRowAnimationFade];
问题是当我调用reloadSections时,相关部分中的所有行和单元格都会被删除。文本更新正确,但有这种不必要的副作用。
答案 0 :(得分:9)
我想我在这里找到了答案:Changing UITableView section header without tableView:titleForHeaderInSection
它可能不是很优雅,但接缝可以工作。
我可以通过调用以下内容来触发仅更新的节标题,而不会产生任何不必要的副作用:
[self.tableView headerViewForSection:1].textLabel.text = [self tableView:self.tableView titleForHeaderInSection:1];
所以唯一需要的是实施:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 1){
if (self.segmentX.selectedSegmentIndex == 0) // or some condition
return @"Header one";
else
return @"Header two";
}
return nil;
}
答案 1 :(得分:0)
如果您已实现这些功能,那么删除它们可以解决您的问题:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
答案 2 :(得分:-2)
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{ if (section == 0)
{
lbl.text = @"abc";
}
if (section == 2)
{
lbl.text = @"2ndsectionbeigns";
}
return headerview;
}