Обновление UITableViewCell динамически - PullRequest
0 голосов
/ 06 января 2011

Как динамически изменить textLabel или detailTextLabel определенной UITableViewCell?

По сути, я загружаю набор файлов из Интернета, когда пользователь нажимает на ячейку. Теперь вместо индикатора прогресса я бы хотел отобразить имя загружаемого файла. Я хотел бы продолжать обновлять detailTextLabel, чтобы показывать (текущие) имена файлов, пока все файлы не будут загружены.

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Предполагая, что вы используете метод, подобный tableView:didSelectRowAtIndexPath: (или есть другой способ получить индексный путь к ячейке), вы можете сделать что-то вроде этого:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

UILabel *label = nil;
for(UIView *subview in cell.contentView.subviews) {
    if([subview isKindOf:[UILabel class]]) {
        label = (UILabel*)subview;
        break;
    }
}

if(label)
    label.text = @"New text";

Это найдет первыйUILabel в ячейке и может не работать, если в вашей ячейке более одного ярлыка.Более надежный способ сделать это - установить тег метки при создании ячейки (это можно сделать в Интерфейсном Разработчике или в коде).Тогда вы можете найти ярлык, как это:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

UILabel *label = nil;
for(UIView *subview in cell.contentView.subviews) {
    if([subview isKindOf:[UILabel class]] && [subview tag] == kDetailLabelTag) {
        label = (UILabel*)subview;
        break;
    }
}

if(label)
    label.text = @"New text";
0 голосов
/ 20 августа 2013

На всякий случай, если у кого-то все еще есть эта проблема, я имел успех с вызовами метода reloadData.Например, в моем коде в методе viewWillAppear у меня есть строка:

[tableSettings reloadData];

Где tableSettings - это имя моего UITableView.

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