gpt4 book ai didi

objective-c - 从 subview IOS 更改父 View 中的数据

转载 作者:行者123 更新时间:2023-11-28 20:38:46 25 4
gpt4 key购买 nike

我的主(根) View X 是使用方法 populateMainScreen() 中的一些数据创建的。

通过在主视图 X 中单击一个按钮, subview Y 会出现在屏幕上。

如何从 Y 触发 X 的 populateMainScreen() 方法,这会导致 View X 发生更改。

如果我在未来的任何时候导航到它,新的更新版本应该是可见的。

最佳答案

在正确的 MVC 实现中,您可以让 X 和 Y 的 View Controller 从一些通用的模型对象集中读取它们所需的数据。 Y 不应该做任何特殊的事情来让 X 显示正确的数据; Y 只需要对模型对象进行更改。然后,当 X 再次出现时,它的 Controller 将再次从模型中获取它需要的数据。如果模型发生变化,该变化自然会反射(reflect)在 X(和 Y,以及显示同一模型数据的任何其他 View )中。

如果您没有数据模型,或者如果您的模型不存储 Y 修改的数据,另一种方法很有用,那就是让 X 的 Controller 保留对 Y 的 Controller 的引用。 X 的 Controller 很可能创建了 Y 的 Controller (因为您指出它们之间存在父/子关系),因此 X 的 Controller 很容易将对 Y 的 Controller 的引用存储在实例变量或属性中。在它的 -viewWillAppear 方法中,X 的 Controller 可以检查该属性;如果它不是零,它可以从 Y 的 Controller 中检索它需要的任何信息。然后它将属性设置为 nil:

-(void)viewWillAppear
{
if (self.ycontroller != nil) {
self.person.name = self.ycontroller.name;
self.person.address = self.ycontroller.address;
self.ycontroller = nil;
}
}

关于objective-c - 从 subview IOS 更改父 View 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com