Что заставляет ячейки таблицы отображаться в случайном / неизвестном порядке? - PullRequest
0 голосов
/ 12 июня 2011

Приложение, которое я создаю, запускается с представлением таблицы. Я могу сразу добавить новую информацию, сохранить ее в списке и перезагрузить представление. Новая ячейка и ее данные отображаются внизу. Однако, когда я перезапускаю приложение, оно переупорядочивает порядок, в котором я их первоначально видел.

Названия ячейки хранятся в переменной с именем countdowns, а описания - в countdown_info. Затем я использую эти переменные и сохраняю их в виде словаря в списке.

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

**[CODE 1]**
Countdown 1
  Description 1
Countdown 2
  Description 2
Countdown 3
  Description 3
Countdown 4
  Description 4

Однако, когда приложение перезапускается / перестраивается, приложение открывается следующим образом:

**[View After Re-Run]**
Countdown 4
  Description 4
Countdown 1
  Description 1
Countdown 3
  Description 3
Countdown 2
  Description 2

Некоторые NSLog, которые я добавил, показывают, что таблица из файла сохраняется как [Code 1], и что indexPath.row в табличном представлении увеличивается с 0-3, но по какой-то причине представление реорганизуется с другим шаблоном .

В чем причина этого? Спасибо!

Код из cellRowAtIndexPath

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

static NSString *CellIdentifier = @"Cell";

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

ClockworkAppDelegate *dataCenter = (ClockworkAppDelegate *)[[UIApplication sharedApplication] delegate];

cell.textLabel.text = [[dataCenter countdowns] objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [[dataCenter countdown_info] objectAtIndex:indexPath.row];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

1 Ответ

2 голосов
/ 12 июня 2011

NSDictionaries неупорядочены , поэтому вы, вероятно, теряете порядок при сохранении в NSUserDefaults. Вам также нужно как-то хранить заказ. См. эту тему для некоторых идей.

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