【发布时间】:2015-03-08 19:37:04
【问题描述】:
在这个导航控制器应用程序中,我在 TAN ViewController 中有一个按钮,点击该按钮后会发布 NSNotification。
-蓝色(根)视图控制器和绿色视图控制器都在监听同一通知
-Blue ViewController 成功响应通知的到来
- 绿色 ViewController 没有成功响应它。它甚至没有看到它到达(即使我使用与 Blue ViewController 的代码完全相同的代码来注册以侦听此通知。)
- 在这两种情况下,我都在注册以收听viewDidLoad 中的通知:
override func viewDidLoad() {
super.viewDidLoad()
// Set Up Listening to Notification:
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: "handleNotification:", name:"User Specs Notification", object: nil)
}
在我访问 TAN ViewController 并从那里发布通知之前,我还要确保访问 GREEN ViewController - 它会自动触发其viewDidLoad 并执行通知侦听代码。但同样,当我回到蓝色/根视图控制器时,我看到它已经正确响应了通知的到来,但是当我然后转到绿色视图控制器时 - 没有任何改变。
有什么想法吗?
我应该在viewDidLoad 以外的地方注册以收听通知吗?如果有,在哪里?为什么它仍然适用于 Blue/Root ViewController - 我 am 在 viewDidLoad 中注册 - 但不在 Green ViewController 中?这其中的逻辑在哪里?
【问题讨论】:
标签: ios swift uinavigationcontroller nsnotificationcenter viewdidload