cellForRowAtIndexPath и конфигурация ячейки - PullRequest
0 голосов
/ 19 февраля 2011

Хорошо, так что используйте стандартный код шаблона для UITableViewController, я использую cellForRowAtIndexPath: для настройки моих UITableViewCells на основе источника данных.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//cell setup
cell.textLabel.text = @"Initial Data!";
return cell;
}

Однако, это внезапно показалось мне проблематичной практикой.Например, допустим, я хочу сделать это

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  //some processing or data update is done here
  //now I want to update the cell
  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  cell.textLabel.text = @"New Data";
}

Кажется, что это бесполезный код, потому что получение ячейки для ее обновления вызывает ее повторное обновление из кода в cellForRowAtIndexPath.

Поэтому я должен поместить конфигурацию для ячейки в другое место и назвать ее как-нибудь иначе, или я должен записать конфигурацию в cellForRowAtIndexPath более умным способом, чтобы простой вызов ее обновилпользовательский интерфейс без

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Обычно я сохраняю собственный массив, чтобы применить необходимые данные к ячейке.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   //cell setup
   MyObject *obj = ...; ///< retrieve obj from somewhere
   cell.textLabel.text = obj.text;
   return cell;
}

Затем, при выборе этого параметра, я изменю свой источник данных.MyObject, например, для обработки данных, получения эскиза для ячейки в потоке или вычисления результата сложности.Контроллер объединит данные и пользовательский интерфейс.

1 голос
/ 19 февраля 2011

Может быть, лучше изменить данные.

Я предполагаю, что вы получите свои данные из массива?Затем измените данные в методе didSelectRowAtIndexPath и перезагрузите только выбранную ячейку.

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