重新加载TableView数据的适当位置在哪里?

时间:2012-01-20 18:25:12

标签: iphone objective-c xcode

我的项目有几个视图控制器,让我们说A和B. 在A我有一个UITableView。当选择一行时,我将行号和单元格文本传递给视图B,然后是pushViewController B。

在视图B中,当点击“完成”按钮时,我对基础数据进行了更改(现在是一个Singleton数组),然后回弹查看A.在视图中一个viewDidAppear,我重新加载UITableView以查看新数据

这是最好的方法吗? 或者,当“完成”按钮被击中时,我应该重新加载UITableView吗? 如果是这样,我如何从视图B中重新加载视图A中的表?

感谢。

4 个答案:

答案 0 :(得分:2)

最好在点击“完成”按钮时直接重新加载数据。您可以通过通知中心执行此操作。有关通知中心的详细信息,请查看此link

答案 1 :(得分:0)

ViewController“A”当然应该负责决定重新加载表数据。我会考虑将它放入ViewController A的“viewWillAppear”方法中。这样就可以在显示之前重新加载表以防止和“闪烁”。

答案 2 :(得分:0)

这没有什么不妥,除了每次调用viewDidAppear时你的表都会重新加载,这可能不是很好,具体取决于表的大小。最好的方法是使用@protocol并制作快速委托设计模式,但如果您不习惯这可能看起来不必要。你也可以使用NSNotifications,虽然在这种情况下我不会坚持使用它,因为没有很多观察者在听这个事件。

答案 3 :(得分:0)

而不是使用NSNotification。您可以将视图A指定为视图B的委托,这是一种更清晰的设计模式。

所以在视图A中它看起来像

ViewB *b = [[ViewB alloc] init];
b.delegate = self;

和在视图B中完成修改后调用

[delegate updateTable];

其中updateTable是委托声明中的@required方法,因为如果它声明它符合该委托,它所需的viewA将需要实现它。

在弹出viewB之前,也会调用此方法。