Обновление заголовка нижнего колонтитула раздела в UITableView без перезагрузки - PullRequest
7 голосов
/ 08 мая 2011

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

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

Спасибо

Ответы [ 4 ]

9 голосов
/ 29 декабря 2015

Я знаю, что опоздал на эту тему, но я обнаружил, что вы можете просто сделать это:

[self.tableView beginUpdates];
[self.tableView footerViewForSection:section].textLabel.text = @"Whatever";
[[self.tableView footerViewForSection:section].textLabel sizeToFit];
[self.tableView endUpdates];
6 голосов
/ 08 мая 2011

Если у вас есть сгруппированный стол, вы можете использовать:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 17)]; //I'm not sure about the frame...
    yourLabel.font = [UIFont systemFontOfSize:16];
    yourLabel.shadowColor = [UIColor whiteColor];
    yourLabel.shadowOffset = CGSizeMake(0, 1);
    yourLabel.textAlignment = UITextAlignmentCenter;
    yourLabel.textColor = RGB(76, 86, 108);
    yourLabel.backgroundColor = [UIColor clearColor];
    yourLabel.opaque = NO;
    return yourLabel;
}

Объявите yourLabel в вашем файле .h. Затем вы можете получить к нему доступ через

yourLabel.text = @"whatever you want";

Пожалуйста, проверьте, работает ли это:)

2 голосов
/ 26 декабря 2016

Марк Олдритт ответил хорошо, но иногда он неправильно измеряет размер этикетки.Фиксированный пример ниже (для раздела == 0):

[self.tableView beginUpdates];
UILabel *footerLabel = [self.tableView footerViewForSection:0].textLabel;

footerLabel.text = [self tableView:self.tableView titleForFooterInSection:0];
CGRect footerLabelFrame = footerLabel.frame;
footerLabelFrame.size.width = self.tableView.bounds.size.width;
footerLabel.frame = footerLabelFrame;
[self.tableView endUpdates];
2 голосов
/ 12 января 2016

Для первого раздела (ziro)

[self.tableView footerViewForSection: 0] .textLabel.text = @ "test";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...