ios – Swift 3中的NSNotifications

前端之家收集整理的这篇文章主要介绍了ios – Swift 3中的NSNotifications前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通知目前是否在 Swift 3中有效?

我在做:

NotificationCenter.default().post(name: DidTouchParticleView,object: self.particle as? AnyObject)

自定义视图的touchesBegan()中,我需要将粒子对象发送到视图控制器(如果有).所以我这样做:

NotificationCenter.default().addObserver(forName: DidTouchParticleView,object: self,queue: OperationQueue.main(),using: presentParticleDisplayView(notification:))

在视图控制器的viewDidLoad()中.我确定当我点击我的自定义视图时,会显示该特定视图控制器,但是,从不调用函数presentParticleDisplayView(notification :).

此外,DidTouchParticleView的全局定义如下:

let DidTouchParticleView = NSNotification.Name("didTouchParticleView")

这是由于测试版,还是我做错了什么?

解决方法

听起来你可能打算调用addObserver(_:selector:name:object :),其中第二个参数消息(选择器:)被发送到第一个参数(目标).

相反,你正在调用错误方法addObserver(forName:object:queue:using :),它的工作方式完全不同.

另外,关于你问题的第二部分:

let DidTouchParticleView = NSNotification.Name("didTouchParticleView")

这是正确的(差不多);它应该是

let DidTouchParticleView = Notification.Name("didTouchParticleView")

所有通知名称现在都是Notification.Name实例.正确的方法是说:

extension Notification.Name {
    static let didTouchParticleView = Notification.Name("didTouchParticleView")
}

然后,您可以在整个代码中将通知名称称为.didTouchParticleView.

猜你在找的iOS相关文章