iPhone + UITableView + доступ к ячейке определенного ряда - PullRequest
3 голосов
/ 27 ноября 2009

Я использую следующий метод в моем приложении:

- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath

В этом методе с помощью indexPath.row я могу получить номер строки для каждой строки.

Но я хочу получить доступ к ячейке в этой строке и выполнить некоторое форматирование только в этой ячейке.

Пожалуйста, ведите меня.

Ответы [ 3 ]

6 голосов
/ 06 июля 2012

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

[[tableView cellForRowAtIndexPath:5 setAccessoryType:UITableViewCellAccessoryNone];

Это НЕ работает, потому что IndexPath не является целым числом. (indexpath.row есть, однако). Итак, просмотрев документацию, я обнаружил, что мы можем использовать NSIndexPath для кодирования строки в Значение NSIndexPath. Вот рабочий код:

[[tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:5 inSection:0]] setAccessoryType:UITableViewCellAccessoryNone];

Таким образом, вы можете получить доступ к ячейке ВСЕГДА, ЛЮБОЙ СТРОК / РАЗДЕЛ, если у вас есть объект таблицы.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 27 ноября 2009

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

Код шаблона сгенерирует новую ячейку или исключит ее из очереди:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
              cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
     }

Затем можно получить доступ к cell, чтобы настроить содержимое каждой ячейки или добавить содержимое в contentView.

Если вы управляете форматированием ячейки для каждой строки (например, цветом cell.textLabel), вы должны сделать это следующим методом делегата:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
1 голос
/ 27 ноября 2009

Вы можете получить доступ к видимой ячейке, используя метод UITableView -cellForRowAtIndexPath. От UITableView ссылка:

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

Возвращаемое значение
Объект, представляющий ячейка таблицы или ноль, если ячейка не виден или indexPath находится вне диапазон.

Однако (IMO) cellForRowAtIndexPath - лучшее место для настройки ячейки.

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