Получение доступа к строке UITableViewCell, которая в данный момент не отображается - PullRequest
1 голос
/ 14 декабря 2011

Есть ли способ получить доступ к UITableViewCell, которого в данный момент нет на экране? Я пытаюсь обновить строки, которые в данный момент не отображаются. Я использую эти складывающиеся / расширяемые строки для UITableView в одном из примеров кода Apple. Я использую это:

for (NSInteger row = 0; row < totalRows; row++) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:section];
    OrderTableViewCell *cell = (OrderTableViewCell *)[_tableView cellForRowAtIndexPath:path];
    cell.CheckmarkButton.selected = YES;
    cell.Symbol.isSelected = YES;
}

Мой totalRows правильный, так как я получаю количество строк из TableView. Поэтому я подумал, что смогу использовать это, пройтись по всем строкам и установить некоторые значения. Однако, если я проверю состояние строк, то те, которые в данный момент на экране, имеют значения, и я могу их изменить, но те, которые находятся за пределами экрана, являются нулевыми и не могут быть установлены. Есть ли способ, которым я могу обойти это? Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

В зависимости от того, что вы хотите обновить, вы можете просто обновить i-ую запись в резервной коллекции.

Например, у вас может быть коллекция, в которой хранятся значения, соответствующие выбранному CheckmarkButton. В вашем цикле вы можете установить myArray[row] = YES. В cellForRowAtIndexPath вы можете сделать cell.CheckmarkButton.selected = myArray[indexPath.row].

Если вы хотите сохранить несколько элементов для каждой ячейки, тогда myArray в приведенном выше примере может содержать экземпляры объекта, который содержит значения, относящиеся к i-й ячейке.

0 голосов
/ 14 декабря 2011

Ну, зачем вам обновлять такую ​​ячейку ... Если ячейка не видна, для экономии памяти система выгружает ее, и, поскольку она не отображается, вам не нужно обновлять ячейку.Напротив, состояние должно быть отражено таким образом, чтобы при вызове cellForRowIndexPath табличным представлением для загрузки ячейки отображался желаемый вид ... Единственная причина, по которой вы хотите делать то, что делаете, - это если ячейкапоказывает, и вам нужно обновить ячейку, для пользователя ... Даже тогда вы все равно можете установить свое состояние и вызвать reloadRowsAtIndexPaths вместо того, чтобы манипулировать ячейкой напрямую ... Надеюсь, это поможет

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