我的项目有几个视图控制器,让我们说A和B. 在A我有一个UITableView。当选择一行时,我将行号和单元格文本传递给视图B,然后是pushViewController B。
在视图B中,当点击“完成”按钮时,我对基础数据进行了更改(现在是一个Singleton数组),然后回弹查看A.在视图中一个viewDidAppear,我重新加载UITableView以查看新数据
这是最好的方法吗? 或者,当“完成”按钮被击中时,我应该重新加载UITableView吗? 如果是这样,我如何从视图B中重新加载视图A中的表?
感谢。
答案 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之前,也会调用此方法。