新通知目前是否在
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") }