Таблица reloadData не выполняется - иногда - PullRequest
0 голосов
/ 19 июня 2011

У меня есть контроллер вида, который вызывается из 2 разных мест.

1) Я звоню из корневого контроллера.Он показан и заселен.Кнопка добавления работает отлично.Я открываю модальную форму, получаю информацию и возвращаю ее в контроллер представления через его делегат.

- (void)itemsAddViewController:(AddItemView *)itemsAddViewController didAddItem
  (OrdersDetails *)orderDetail;
{
    if (orderDetail) {
        [orderDetailItems addObject:orderDetail];
}   
[self fetchOrderDetails];
[lineItemsTableView reloadData];
[self dismissModalViewControllerAnimated:YES];

}

Однако, когда я вызываю ее из другого представления (справа от разделенного представления), этотот же код НЕ перезагружает таблицу.Он добавляет данные - если я оставляю форму и возвращаюсь, данные есть, но табличное представление не обновляется.Когда я перебираю код, он получает строку, но затем перебирает ее, как будто ее не видит.

1 Ответ

1 голос
/ 20 июня 2011

Когда модальный контроллер вида представлен поверх контроллера вида, содержащего -itemsAddViewController:didAddItem:, вид базового контроллера не виден и поэтому будет выгружен, если контроллер получит предупреждение о памяти.

В результате ваш вид может быть не загружен, и ваша lineItemsTableView розетка может быть nil, когда вы звоните -itemsAddViewController:didAddItem:. Ваш вызов на reloadData должен был бы перейти на -viewWillAppear:, чтобы не допустить предположения, что представление вашего контроллера может иметь постоянное состояние, когда оно невидимо.

...