Подтвердить что ты не робот

Изменение заголовка/нижнего колонтитула UITableView WHILE RUNNING приложения?

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

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

и

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

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

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

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

4b9b3361

Ответ 1

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

- (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:, чтобы перезагрузить этот конкретный раздел.

Ответ 2

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

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

И в

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

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

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

Ответ 3

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

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

Ответ 4

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

[self.tableView reloadSectionIndexTitles];