2014-06-18 39 views
11

我已经设置了观察者如下,其中包括logYes()功能:NSNotification无法识别的选择发送到实例中夫特

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 

我已经尝试了BU nch不同的选择器,没有运气:

logYes 
logYes: 
logYes() 
logYes(): 

我不知道。任何见解? tyvm :)

参考文献:
NSNotification not being sent when postNotificationName: called
NSNotificationCenter addObserver in Swift
Delegates in swift?

回答

26

我认为你原来的选择(logYes:)是正确的 - 这是你的功能应该被改写。通知观察员函数收到张贴的通知作为参数,所以你应该写:

func logYes(note: NSNotification) { 
    println("Yes") 
} 
+2

是的!我正在吠叫错误的树。我♥你的男人。无法将此选为另一个10分钟的接受答案。 – kmiklas

+7

顺便说一句,如果声明的logy像“private func logYes(notification:NSNotification)” –

+0

@ArthurGevorkyan @ArthurGevorkyan拯救了我的一天,可能会得到一个无法识别的选择器异常!但选择器怎么不能私有?是不是只在类中声明了它呢? – bluenowhere

相关问题