当容器视图控制器中发生某些事情时,如何更新视图控制器?

How can I update a view controller when something happens in a container view controller?

我需要做的是能够在其中的容器视图中发生某些事情时更新我的​​主视图控制器。

例如,如果页面顶部有一个带有保存按钮的导航栏。导航栏下方是一个容器视图和一个表单。保存按钮是灰色的,直到文本被输入到表单中,然后它变得难以处理用户。我想做类似的事情,以便主视图控制器响应容器视图上发生的事情。

我可以使用单例创建一个布尔变量,当我希望我的代码变为 运行 时该变量会发生变化,但是我怎样才能做到这一点以便一旦该变量变为 true,其他视图控制器 运行s 并响应此更改?

我在 this post 中看到我可以使用委托,但它仍然给我留下了另一个视图控制器如何检测变量已更改的问题 - 此 [= 中的方法27=] 只是另一种让我认为可以从另一个视图控制器访问变量的方法。

我想我可以有一个 while 循环 运行ning 检查变量但是这会冻结主视图控制器直到 while 循环完成 - 在这种情况下变量是 true不是吗?

有没有一种方法可以让视图控制器检查变量是否已更改,以便一旦发生更改,某些代码就可以 运行 之后不会像我认为的 while 循环那样冻结视图控制器?或者视图控制器响应变量值的方法?

谢谢。

让主视图控制器侦听 NSNotification,告诉它需要保存一些东西。输入文本时,负责文本字段的控制器会发送通知。

如果目标需要了解其详细信息,您可以将新文本(或其他信息)附加到通知中。