IPhone настраиваемый UITableViewCell Перезагрузка - PullRequest
1 голос
/ 04 марта 2010

В настоящее время я борюсь с этой проблемой: Я получил UITableViewController, который отображает tableView с различными пользовательскими ячейками.

В одной пользовательской ячейке отображается число (по метке). Если вы щелкнете по этой ячейке, navigationController перейдет к UIPicker, где пользователь сможет выбрать номер для отображения. Если пользователь возвращается назад, в ячейке должно отображаться обновленное значение.

Проблема: Мне удалось перезагрузить клетки, позвонив

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [self.tableView reloadData];
}

в UITableViewController.

Это работает только в том случае, если я не использую dequeueReusableCellWithIdentifier для ячейки (в противном случае таблицы не будут отображать обновления) Но в этом случае использование памяти растет и растет ... Кроме того, программа падает примерно после 15 перемещений в pickerView и обратно - я думаю, потому что ячейка, которая должна быть перезагружена, уже освобождена.

Как я могу обновлять пользовательскую ячейку многократного использования каждый раз, когда открывается вид? Какое лучшее решение?

Я думаю, что удерживающие клетки не должны использоваться?

Ответы [ 2 ]

1 голос
/ 09 марта 2010

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

В этом случае просто получите ссылку на UITableViewCell, который вы хотите "обновить", и вызовите [self setNeedsDisplay] изосновной поток на нем, чтобы вызвать его обновление (вызовет drawRect на нем, чтобы вызвать его рисование).

0 голосов
/ 04 марта 2010

Вы установили соответствующий идентификатор в NIB? Он должен быть таким же, как вы используете при звонке dequeueReusableCellWithIdentifier:

См. Шаг 3 здесь

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