如何在NavigationController中将信息从子项返回到父项

时间:2009-01-29 02:37:32

标签: objective-c iphone

我想知道从子视图中获取某些消息的正确方法是什么。

我有一个在子视图中编辑的对象。我想在TableView中看到他们的修改。

然而,我不知道干净的方法(我不喜欢这里的单身人士)。

当Child视图消失并获得一些信息时,是否可以获得通知?

3 个答案:

答案 0 :(得分:2)

您可以在某个UIViewController即将消失之前及其消失后立即通知UIView通知viewWillDisappear:viewDidDisappear:。请注意,大多数UIKit对象(包括UITableView)都是UIView的子类。

答案 1 :(得分:1)

恕我直言,“正确”的方法是在视图的控制器(可能是您的导航控制器)或应用程序委托中实现自定义协议,并让子视图在获得viewWillDisappear时使用它进行通信和/或viewWillDisappear通知(如Adam的回复中所述)。同样,在父视图中,您可以刷新viewWillAppear处理程序中的必要信息。

这样,父视图从委托中获取数据,而不是直接从特定的子视图获取,后者在您的设计中维护MVC。

答案 2 :(得分:0)

您还可以发出父级将被订阅的通知(使用NSNotificationCenter) - 这样可以获得其他类的通知。

但是如果它是一个非常严格的关系,只有子视图和主表关心,你可能应该将你的表视图控制器设置为子视图的委托,并让子视图直接调用委托(如上所述的协议是一个这样的事情好主意。)