Изменение заголовка/нижнего колонтитула UITableView WHILE RUNNING приложения?
Я столкнулся с проблемой, которую я не могу решить...
У меня есть сгруппированная таблица, верхний колонтитул секции и секция секции отображаются правильно после запуска благодаря
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
и
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
Тем не менее, я не могу понять, как их обновлять позже, я не знаю, как изменить эти тексты, и это довольно сложно, потому что, на мой взгляд, это должно быть не более сложным, чем изменение текстовой метки или что-то еще.. (некоторое свойство ".text"...)
Я просмотрел всю документацию без везения...
Любая помощь приветствуется и приветствуется!
С Уважением,
Энрико
Ответы
Ответ 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];