在这个导航控制器应用程序中,我在TAN ViewController中有一个按钮,当点击发布NSNotification时。
- Blue(Root)ViewController和Green ViewController都正在收听同样的通知
- 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)
}
我还要确保访问GREEN ViewController - 它会自动触发其viewDidLoad
并执行通知监听代码 - 然后再转到TAN ViewController并从那里发布通知。但是,当我回到Blue / Root ViewController时,我发现它已经正确响应了Notification的到来,但是当我转到Green ViewController时 - 没有任何改变。
有什么想法会发生什么?
我是否应该注册以在viewDidLoad
以外的其他地方收听通知?如果是的话,在哪里?为什么它仍然适用于Blue / Root ViewController - 我我在viewDidLoad
注册 - 但不在Green ViewController中注册?这里的逻辑在哪里?
答案 0 :(得分:1)
当您返回蓝色VC时,将取消分配绿色视图控制器。所以没有收到通知。