0

我使用 aUINavigationController来控制视图控制器的更改。假设我将 A1 和 A2 一个一个推入。A1 和 A2 都是我自定义的 View Controller A 的实例。A 已经注册了一个通知,它会在收到通知时刷新 UI。

我的问题是:
当我在 A2 中发布通知时,A2 可以收到它。
但是,当我弹出到 A1 时,A1 没有变化。

那么任何人都可以帮我解决它吗?

顺便说一句,我使用通知的原因是我可能会推送多个 A 的实例,如果任何一个发布通知,堆栈中的其他实例也需要更新。

4

3 回答 3

0

只是猜测,但

您是否在 viewDidLoad: 或 viewDidAppear: 中注册通知?您是在 viewDidUnload: 或 viewDidDisappear: 中注销吗?

通常,使用出现/消失方法注册通知是最好的选择,因为视图控制器只会对可见的通知感兴趣。

但是,无论您使用哪种方法,请确保您的注册和取消注册调用在匹配的 UIViewController 方法中。

于 2012-04-11T04:27:30.990 回答
0

以下是您的问题 - 我的问题是:当我在 A2 中发布通知时,A2 可以收到它。但是,当我弹出到 A1 时,A1 没有变化。

当您弹出到 A1 时,那时 A2 被释放,并且您在那里创建的通知/侦听器也被删除,因此它不会响应通知。现在,如果您希望 A1 也收听通知,那么您还需要在 A1 中添加观察者。

于 2012-04-11T05:03:53.423 回答
0

奇怪的是,在我重新启动 Xcode(4.3.1 (4E1019)) 后它可以收到通知。

谢谢你们的帮助。

顺便说一句,如果对象没有被释放,它将收到通知。

于 2012-04-11T05:17:03.347 回答