web-dev-qa-db-ja.com

アプリの実行中にUITableViewセクションのヘッダー/フッターを変更しますか?

私は解決できない問題に直面しています...のおかげで、セクションヘッダーとセクションフッターが起動時に正しく表示されるグループ化されたテーブルがあります。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

そして

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

しかし、後でそれらを更新する方法がわかりません。それらのテキストを変更する方法がわかりません。また、テキストラベルなどを変更することほど難しいことはないと思っていたので、とてもイライラしました。 「.text」プロパティ...)

運が悪かったので、ドキュメント全体を検索しました...

どんな助けでも大歓迎です!よろしく、Enrico

21
Enrico Querci

デリゲートメソッドで、セクション名を返すメソッド呼び出しを追加します。例:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    switch (section) {
        case firstSectionTag:
            return [self firstSectionTitle];
        case secondSectionTag:
            return [self secondSectionTitle];
        // ...
        default:
            return nil;
    }
}

- (NSString *)firstSectionTitle {
    // generate first section title programmatically, e.g. "return [[NSDate date] description];" 
}

// ...

次に、セクションのタイトルを更新する必要がある場合は、次のメソッドのようなものをトリガーするNSNotificationを送信します。

- (void)refreshTableSectionTitles:(NSNotification *)notification {
    [tableView reloadData];
}

テーブルが大きく、より細かい制御が必要な場合は、NSNotificationNSDictionaryを渡して、再ロードするセクションを含め、-refreshTableSectionTitlesの辞書を読んでセクションを取得しますNSInteger、およびテーブルビューの -reloadSections:withRowAnimation: を使用して、特定のセクションをリロードします。

25
Alex Reynolds

以下を使用できます。

-(void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

そして

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

ステートメントで新しいヘッダーテキストを定義します。

これにより、ヘッダー/フッターを変更しながら素敵なアニメーションが作成されます。

7
Ako

タイトルを変更するコードで次の行を使用します。

    [[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
4
Zoltan Varadi