Как я могу установить UITableViewCellAccessory для выбранной строки?(IPhone / IPad) - PullRequest
1 голос
/ 27 января 2012

Мне нужен способ установки UITableViewCellAccessory для любой строки.Однако уловка в том, что мне нужно иметь возможность сделать это ВНЕ из UITableView методов делегатов.

Я пробовал это, но это не показывает аксессуар.

[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:1]] setAccessoryType:UITableViewCellAccessoryCheckmark];

Если есть какая-то разница, я создал UITableView в IB в раскадровке.Данные статические, и я использую стиль сгруппированных таблиц только с одним разделом.

Пожалуйста, кто-нибудь может мне помочь?

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Если ваше табличное представление прокручивается так, что рассматриваемая ячейка может иногда прокручиваться вне поля зрения и затем возвращаться в представление, вы должны управлять содержимым этой ячейки только из метода UITableView cellForRowAtIndexPath:. Причина в том, что при перерисовке ячеек объект tableview вызывает этот метод, чтобы убедиться, что видимые ячейки правильно отображаются. (Ячейки, которые не видны, вообще не нужно отображать.)

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

Внутри этого метода вы можете проверить (например, с помощью оператора if) значение indexPath.section и indexPath.row, чтобы вы могли сконфигурировать конкретную ячейку так, как вы этого хотите. Это включает в себя установку аксессуара.

2 голосов
/ 27 января 2012

Всегда используйте [NSIndexPath indexPathForRow:inSection:] при работе с табличными представлениями.

0 голосов
/ 27 января 2012

Вы можете выяснить, по какому indexPath вам нужна галочка, а затем использовать что-то вроде этого

    UITableViewCell * cell = [tableView cellForRowAtIndexPath:someIndexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...