4

我有一个使用故事板的项目。我有一个带有静态单元格和组样式的 UITableView。

我需要根据分段控件中所做的选择(在另一部分中)更改一个部分中的部分文本

我找到了一些解决方案,表明您应该使用覆盖此方法:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

并通过调用触发更新:
[[self tableView]reloadSections:[NSIndexSet indexSetWithIndex:SectionToChange] withRowAnimation:UITableViewRowAnimationFade];

问题是当我调用 reloadSections 时,相关部分中的所有行和单元格都会被删除。文本更新正确,但有这种不需要的副作用。

4

3 回答 3

10

我想我在这里找到了答案: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;
}
于 2013-10-14T23:29:07.560 回答
-1

如果您已经实现了这些功能,那么删除它们应该可以解决您的问题:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-10-14T04:10:21.717 回答
-3
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{        if (section == 0)
          {
                lbl.text = @"abc";
          }
        if (section == 2)
          {
                lbl.text = @"2ndsectionbeigns";
          }
return headerview;

}
于 2017-01-24T11:37:26.490 回答