перезагрузить uitableview одновременно - PullRequest
1 голос
/ 17 сентября 2009

Я должен перезагрузить uitableview одновременно с использованием потока. Я уже использую две темы для загрузки данных из Интернета. Возможно ли использовать поток для перезагрузки таблицы? Есть ли другой путь?

Ответы [ 2 ]

1 голос
/ 17 сентября 2009

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

Если это так, то я бы:

  1. Определить модель данных как свойство.
  2. Обновление временной модели данных в фоновом потоке.
  3. При обновлении я обновляю свойство модели данных в главном потоке.

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

Реализация будет выглядеть примерно так:

-(void)releadData;
{
  [self performSelectorInBackground:@selector(reloadDataInBackground)
                         withObject:nil];
}

-(void)reloadDataInBackground;
{
  NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
  MyDataModel* model = nil;
  // Do what is needed to setup model.
  [self performSelectorOnMainThread:@selector(updateModelOnMainThread:)
                         withObject:model
                      waitUntilDone:NO];
  [pool release];
}

-(void) updateModelOnMainThread:(MyDataModel*)model;
{
  self.model = model;
  [self.tableView reloadData];
}
0 голосов
/ 17 сентября 2009

одновременно с чем?

все UIKit должно быть сделано в главном потоке, поэтому вы можете использовать фоновые потоки для общения в Интернете или для собственной обработки, но любое реальное взаимодействие с UITableView должно быть в основном потоке.

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