将观察者添加到尚未加载的ViewController

时间:2015-12-04 20:03:06

标签: ios swift nsnotificationcenter

所以这是我的情况。我正在使用SWRevealViewController并且在后面的VC上我有一些UI元素需要在通知发布时进行更新。我的问题是,当通知发生时,视图可能不可见(因此未加载),因此显然视图没有机会注册其观察者。作为一种解决方法,我在发布通知之前尝试在我的AppDelegate中实例化视图控制器,最初当我尝试此操作时,IBOutlets为零。然后我发现另一个问题(here)建议使用initWithCoder方法,因为在从故事板中实例化视图控制器时会调用此方法。但是,即使使用这种做法,我的IBOutlets仍然是零。有没有办法完成我在这里要做的事情,或者没有?

AppDelegate代码(在application:didReceiveRemoteNotification中):

let storyboard = UIStoryabord(name: "Main", bundle: nil)
let menuVC = storyboard.instantiaveViewControllerWithIdentifier("menuVC")
NSNotificationCenter.defaultCenter.addObserver(menuVC, selector: "updateMessagesBadge:", name: "notificationName", object: nil)
NSNotificationCenter.defaultCenter.postNotification("notificationName", object: nil)

MenuVC代码:

required init?(coder: aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    //what to do here?
}

func updateMessagesBadge(notification: NSNotification) {
    //try to change outlet properties, but outlets are nil
}

0 个答案:

没有答案