Изменить верхний / нижний колонтитул раздела UITableView при запуске приложения? - PullRequest
21 голосов
/ 10 октября 2009

Я столкнулся с проблемой, которую не могу решить ... У меня есть сгруппированная таблица, чей верхний и нижний колонтитулы отображаются правильно при запуске благодаря

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

и

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

Тем не менее, я не могу понять, как обновить их позже, я не знаю, как изменить эти тексты, и это очень расстраивает, потому что, на мой взгляд, это было не сложнее, чем менять текстовую метку или что-то еще ... . (некоторое свойство ".text" ...)

Я безуспешно искал всю документацию ...

Любая помощь приветствуется! С Уважением, Enrico

Ответы [ 4 ]

25 голосов
/ 10 октября 2009

В методе делегата добавьте вызов метода, который возвращает имя раздела, например ::100100

- (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];
}

Если таблица большая и требуется более точное управление, передайте NSNotification с NSDictionary, содержащим раздел, который вы хотите перезагрузить, прочитайте словарь в -refreshTableSectionTitles, чтобы получить обратно раздел NSInteger, и используйте таблицу -reloadSections:withRowAnimation: для перезагрузки этого конкретного раздела.

7 голосов
/ 01 сентября 2011

Вы можете использовать:

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

А в

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

определить ваш новый текст заголовка в выписке.

Это создаст приятную анимацию при изменении верхнего / нижнего колонтитула.

4 голосов
/ 27 июня 2012

Используйте эту строку в своем коде, где вы хотите изменить заголовок:

    [[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
0 голосов
/ 29 сентября 2013

В вашем TableViewController используйте

[self.tableView reloadSectionIndexTitles];
...