NSNotification 无法识别的选择器发送到 Swift 中的实例
Posted
技术标签:
【中文标题】NSNotification 无法识别的选择器发送到 Swift 中的实例【英文标题】:NSNotification unrecognized selector sent to instance in Swift 【发布时间】:2014-06-18 21:12:23 【问题描述】:我设置了一个观察者如下,其中包含logYes()
函数:
class SplashPageVC: UIViewController
func logYes()
println("Yes");
override func viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "logYes:", name: "userValid", object: nil)
我已将以下 IBAction 连接到一个按钮:
class LoginVC: UIViewController
@IBAction func loginSubmitted(sender : AnyObject)
NSNotificationCenter.defaultCenter().postNotificationName("userValid", object: nil)
点击按钮时出现以下错误:
[_TtC13Explorer12SplashPageVC self.logYes:]: unrecognized selector sent to instance
我尝试了很多不同的选择器,但都没有成功:
logYes
logYes:
logYes()
logYes():
我没有想法。有什么见解吗? tyvm :)
参考资料:NSNotification not being sent when postNotificationName: calledNSNotificationCenter addObserver in SwiftDelegates in swift?
【问题讨论】:
【参考方案1】:我认为你原来的选择器 (logYes:
) 是正确的——应该重写你的函数。通知观察者函数接收发布的通知作为参数,所以你应该这样写:
func logYes(note: NSNotification)
println("Yes")
【讨论】:
是的!我叫错了树。我♥你男人。再过 10 分钟无法选择此作为接受的答案。 顺便说一句,如果像“private func logYes(notification: NSNotification)”这样声明 logYes,可能会得到一个无法识别的选择器异常 @ArthurGevorkyan 拯救了我的一天!但是选择器怎么不能是私有的?不是只在声明的类中调用吗? @sharky101,它由发送者(任何 UIControl)调用,因此发送者应该可以在选择器中访问它,而不仅仅是为操作分配目标的类。干杯,祝你好运:)以上是关于NSNotification 无法识别的选择器发送到 Swift 中的实例的主要内容,如果未能解决你的问题,请参考以下文章
[UICollectionViewCell imageView]:无法识别的选择器发送到实例