Обновить таблицу в классе модели

У меня есть один класс представления. В этом классе у меня есть табличный вид. В моем классе модели я делаю Asynchrous ASIHTTPRequest. И я хочу, чтобы операция была успешной, чтобы перезагрузить данные в виде таблицы. Это хороший способ сделать это. Я считаю, что добавить одно свойство UITableView в класс модели и использовать его перезагрузку. Это хороший подход?

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

В вашей модели, когда происходят изменения:

 [[NSNotificationCenter defaultCenter] postNotificationName:@"uniqueNotificationName" object:self]; 

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

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToCall:) name:@"uniqueNotificationName" object:nil]; 

И реализовать методToCall:

 - (void)methodToCall:(NSNotification *)notification { [self.tableView reloadData]; } 

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

 [[NSNotificationCenter defaultCenter] removeObserver:self]; 

Я думаю, что ваша модель должна сообщить, что контроллер, который обновлен (или наоборот, использует KVO). Затем контроллер должен отправить сообщение для перезагрузки.

Когда вы хотите перезагрузить табличный вид, вы можете использовать один из таких подходов:

  1. Если вы хотите перезагрузить все отображаемые ячейки, вы можете просто вызвать [tableView reloadData]; , Обратите внимание, что только отображаемые ячейки будут перезагружены. Итак, если у вас есть, например, 10000 ячеек и только 10 из них, то только для 10 ячеек будет вызван метод cellForRowAtIndexPath:

  2. Если вы хотите перезагрузить определенные ячейки, вы должны вызвать следующий метод UITableView : - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation и предоставить в первом списке операндов ячейки для перезагрузки.

  3. Если вы хотите перезагрузить весь раздел (или количество разделов) UITableView тогда вы должны вызывать - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation и предоставлять в первом списке операндов разделы для перезагрузки.

Надеюсь, это поможет вам выбрать подходящий вариант.

используйте synchrous и gcd для загрузки данных. при получении вызова данных [self reload] в главной очереди

  • Выбор и отмена выбора UITableViewCells - Swift
  • скопировать UITableViewCell в uiview
  • представление таблицы iOS с пользовательской ячейкой прототипа в UIViewController
  • Обращение UITableView с пользовательскими ячейками
  • Ошибка NSNull length при разборе JSON в Table View
  • Как нажимать новый viewcontroller при нажатии на строку ячейки таблицы?
  • iOS - базовые данные - просмотр таблицы с добавлением новой записи
  • Как вернуть нулевой пользовательский UITableViewCell
  • ios UITableView reloadData не увеличивает высоту содержимого
  • Ios показывает / скрывает представления внутри ячейки таблицы
  • Установите скорость прокрутки таблицыView selectRowAtIndexPath:
  • Давайте будем гением компьютера.