我的主(根)视图X正在使用方法populateMainScreen()
中的某些数据创建。
通过单击主视图X内的一个按钮,子视图Y出现在屏幕上。
如何触发Y的X的populateMainScreen()方法,这将导致视图X发生更改。
如果将来我随时导航到它,则应该可以看到新的更新版本。
最佳答案
在适当的MVC实现中,您将使X和Y的视图控制器从一些常见的模型对象集中读取它们所需的数据。 Y不必执行任何特殊操作即可让X显示正确的数据; Y只需要对模型对象进行更改。然后,当X重新出现时,其控制器将再次从模型中获取所需的数据。如果模型发生更改,则该更改自然会反映在X(和Y,以及显示同一模型数据的任何其他视图)中。
如果您没有数据模型,或者您的模型没有存储Y修改的数据,那么另一种方法很有用,就是让X的控制器保留对Y控制器的引用。 X的控制器可能创建了Y的控制器(因为您指出它们之间存在父/子关系),因此X的控制器很容易在实例变量或属性中存储对Y的控制器的引用。在它的-viewWillAppear
方法中,X的控制器可以检查该属性。如果不是nil,则可以从Y的控制器中检索所需的任何信息。然后将属性设置为nil:
-(void)viewWillAppear
{
if (self.ycontroller != nil) {
self.person.name = self.ycontroller.name;
self.person.address = self.ycontroller.address;
self.ycontroller = nil;
}
}