4

ストーリーボードを使用するプロジェクトがあります。静的セルとグループ スタイルを持つ UITableView があります。

セグメント化されたコントロール (別のセクション) で行われた選択に応じて、あるセクションのセクション テキストを変更する必要があります。

このメソッドをオーバーライドする必要があることを示すいくつかの解決策を見つけました。
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

次を呼び出して更新をトリガーします。
[[self tableView]reloadSections:[NSIndexSet indexSetWithIndex:SectionToChange] withRowAnimation:UITableViewRowAnimationFade];

問題は、 reloadSections を呼び出すと、問題のセクションのすべての行とセルが削除されることです。テキストは正しく更新されますが、この望ましくない副作用があります。

4

3 に答える 3

10

ここで答えを見つけたと思います:tableView:titleForHeaderInSection なしで UITableView セクションヘッダーを変更する

あまりエレガントではないかもしれませんが、うまくいきます。

次のように呼び出すことで、不要な副作用なしでセクション ヘッダーのみの更新をトリガーできます。 [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 に答える