Swift NSNotification 不适用于所有 ViewController
Swift NSNotification not working for all ViewControllers
在此导航控制器应用程序中,我在 TAN ViewController 中有一个按钮,当单击该按钮时 post 一个 NSNotification。
-蓝色(根)ViewController 和绿色 ViewController 都在收听相同的通知
-蓝色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 和 post 来自那里的通知。但是,当我再次返回 Blue/Root ViewController 时,我看到它已正确响应通知的到达,但是当我返回绿色 ViewController 时 - 什么都没有改变。
有什么想法吗?
我应该在 viewDidLoad
以外的地方注册收听通知吗?如果有,在哪里?为什么它仍然适用于 Blue/Root ViewController - 我 am 在 viewDidLoad
注册 - 但不是在绿色 ViewController ?这哪里有逻辑?
当你回到蓝色时,绿色视图控制器被释放VC。所以它不在那里接收通知。
在此导航控制器应用程序中,我在 TAN ViewController 中有一个按钮,当单击该按钮时 post 一个 NSNotification。
-蓝色(根)ViewController 和绿色 ViewController 都在收听相同的通知
-蓝色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 和 post 来自那里的通知。但是,当我再次返回 Blue/Root ViewController 时,我看到它已正确响应通知的到达,但是当我返回绿色 ViewController 时 - 什么都没有改变。
有什么想法吗?
我应该在 viewDidLoad
以外的地方注册收听通知吗?如果有,在哪里?为什么它仍然适用于 Blue/Root ViewController - 我 am 在 viewDidLoad
注册 - 但不是在绿色 ViewController ?这哪里有逻辑?
当你回到蓝色时,绿色视图控制器被释放VC。所以它不在那里接收通知。