Swift NSNotification不适用于所有ViewControllers

时间:2015-03-08 19:37:04

标签: ios swift uinavigationcontroller nsnotificationcenter viewdidload

在这个导航控制器应用程序中,我在TAN ViewController中有一个按钮,当点击发布NSNotification时。 Project Storyboard

- 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中注册?这里的逻辑在哪里?

1 个答案:

答案 0 :(得分:1)

当您返回蓝色VC时,将取消分配绿色视图控制器。所以没有收到通知。