更新屏幕上不可见的UITableViewController

时间:2015-02-06 15:50:33

标签: ios

这是我的情景。我有一个产品屏幕和一个产品详细信息屏幕。基本上,您可以单击产品并转到产品详细信息屏幕。现在,当我在产品详细信息屏幕上时,我想做一些操作,例如更改产品名称,当我使用后退按钮返回时,我想要在产品屏幕中反映出来。

我该怎么做?

我尝试过的解决方案:

我在产品详细信息控制器上创建了一个协议,并让产品控制器订阅了该协议。每次我更改产品名称时,协议都会在产品控制器中触发,但我无法更改产品控制器上的任何UI元素,因为产品控制器当前不可见。

目前,我正在重新加载 viewWillAppear 上的所有数据,但这意味着每次加载视图时它都会调用服务器(iCloud)。这导致等待时间过长。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在viewWillAppear上,您只能更新数据已更改的单个单元格。你知道哪个被点击了,所以你可以存储对它的引用,然后调用:

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPathOfYourCell, nil] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates]; 

这将避免更新整个表并导致额外延迟。如果表视图足够快以进行滚动,那么它将为每个单元格获取数据,那么这也足够快。