0

我有一个从 2 个不同的地方调用的视图控制器。

1)我从根控制器调用它。它被显示并填充。添加按钮完美运行。我打开一个模态表单,获取信息并通过它的委托将其返回给视图控制器。

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

}

但是,当我从另一个视图(在拆分视图的右侧)调用它时,相同的代码不会重新加载表。它添加了数据——如果我离开表单然后回来,数据就在那里,但表格视图没有被刷新。当我单步执行代码时,它得到了这条线,然后像看不到它一样越过它。

4

1 回答 1

1

当模态视图控制器出现在包含-itemsAddViewController:didAddItem:底层控制器视图的视图控制器上时,它是不可见的,因此如果控制器收到内存警告,它将被卸载。

因此,您的视图可能不会被加载,并且您的lineItemsTableView出口可能会nil在您调用时出现-itemsAddViewController:didAddItem:。您的调用reloadData需要转移-viewWillAppear:以避免假设控制器的视图在不可见时可以具有持久状态。

于 2011-06-20T16:44:02.087 回答