加载页面后,NSNotification发送的数据为空白

时间:2015-10-06 22:17:24

标签: ios iphone swift uiviewcontroller notifications

我通过NSNotification将数据从ViewController 1发送到ViewController 3,从ViewController 2发送到ViewController 3。

NSNotificationCenter.defaultCenter().postNotificationName("retirementChange", object: retirementText?.text)

当我将数据从NSNotification设置为ViewController 3中的变量时,我从ViewController 3打印数据。我将变量age设置为通知对象。

NSNotificationCenter.defaultCenter().addObserver(self, selector: "setRetirementAge:", name: "retirementChange", object: nil)

func setRetirementAge(notification: NSNotification){
    age = notification.object!
    print(age)
}

当时它在控制台中打印很好,但是当我尝试在页面加载后使用值age时,它就是BLANK。

任何帮助都将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:1)

您应该考虑问题评论中提到的内容,并且可能不会使用NSNotification,而是以有序的方式将数据传递给控制器​​。通知实际上是指当某些内容在其他地方发生变化时通知屏幕上的控制器,通常是在后台线程上。正确的方法是在视图控制器出现之前设置要显示的正确数据。它应该由一些可用的数据模型设置,或者通过由呈现视图控制器以常规方法(例如prepareForSegue)设置的变量来设置。

话虽如此,从您的代码中可以看出,您在发送通知时误解了object参数。 object仅限制通知的范围。如果您想传递数据,您必须创建一个新的NSNotification并包含一个userInfo字典,其中包含您希望接收者获得的任何数据。

let notif = NSNotification(name: "retirementChange", object: nil, userInfo: ["age": 42])
NSNotificationCenter.defaultCenter().postNotification(notif)