Обновить значение в ячейке таблицы на iPhone - PullRequest
5 голосов
/ 26 августа 2010

Если у меня есть настройка tableView в приложении iPhone с несколькими строками, как я могу обновить только одну из этих строк?Мне известно, что они обновляются вручную по мере их появления, но я пытаюсь выдвинуть обновление, ради аргумента таймер обратного отсчета.

Спасибо

Ответы [ 3 ]

15 голосов
/ 27 августа 2010

Спасибо за ответы, я нашел другой способ!

Позвонив по этому номеру:

NSIndexPath *a = [NSIndexPath indexPathForRow:0 inSection:0]; // I wanted to update this cell specifically
CustomTableViewCell *c = (CustomTableViewCell *)[theTableView cellForRowAtIndexPath:a];

Затем я могу напрямую изменить метку, хранящуюся в моем CustomTableViewCell, например:

[c nowPlayingTrack].text = ...

Надеюсь, это поможет кому-то еще!

Я не уверен, почему, но простой вызов reloadData для tableView вызывал ошибки времени выполнения из-за пользовательской метки. (

3 голосов
/ 26 августа 2010

Вы можете просто перезагрузить одну строку, вызвав

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

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

typedef enum {
   UITableViewRowAnimationFade,
   UITableViewRowAnimationRight,
   UITableViewRowAnimationLeft,
   UITableViewRowAnimationTop,
   UITableViewRowAnimationBottom,
   UITableViewRowAnimationNone,
   UITableViewRowAnimationMiddle
}

Если вы не знаете indexPath, вы можете получить его, позвонив

+ (NSIndexPath *)indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section
1 голос
/ 26 августа 2010

Я предполагаю, что вы используете какой-то тип пользовательского UITableViewCell ....

Что я обычно делаю, это создаю массив моих пользовательских UITableViewCell и заполняю из них мой UITableView.Таким образом, я могу обновить базовый объект (ы) (в данном случае свойство таймера вашего UITableViewCell) и обновить UITableView.

Возможно, вы сможете получить к нему прямой доступ (простите за отсутствие у меня фактического синтаксиса iphone.... прошло уже несколько месяцев)

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

[[[myUITableView cells] itemAtIndex:14] setTimerValue:WHATEVER];
...