我有一个表格视图控制器,一个滑动手势识别器,只要用户向上滑动就会触发NSNotificationCenter.defaultCenter().postNotificationName("DuskTheme", object: nil)
。为什么我的NSNotificationCenter抛出异常?
在viewDidLoad中()函数,我有以下观察者:NSNotificationCenter.defaultCenter().addObserver(self, selector: "dusk:", name:"DuskTheme", object: nil)
它调用改变所述元件的电流视图控制器上的颜色(即主题)的函数dusk(notification: NSNotification)
。
我想改变我的导航栏的颜色,以及当用户刷卡,所以我子类的navigationController并添加了以下观测到其viewDidLoad中():NSNotificationCenter.defaultCenter().addObserver(self, selector: "dusk:", name:"DuskTheme", object: nil)
还有dusk(notification: NSNotification)
功能包含了新的颜色我从Storyboard链接的导航栏。
这里是我的自定义导航控制器类:
class customNavigationController: UINavigationController {
@IBOutlet weak var featuredNavBar = ThemeManager.navigationbar
override func viewDidLoad() {
super.viewDidLoad()
//Adding a theme notification observer
NSNotificationCenter.defaultCenter().addObserver(self, selector: "dusk:", name:"DuskTheme", object: nil)
func dusk(notification: NSNotification) {
UIView.animateWithDuration(1, animations: {
UIApplication.sharedApplication().statusBarStyle = .LightContent
self.featuredNavBar?.barTintColor = UIColor(red: 69/255, green: 69/255, blue: 69/255, alpha: 1)
})
}
}
}
现在,出于某种原因,每当表视图控制器刷卡应用程序引发以下异常:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TestApp.customNavigationController dusk:]: unrecognized selector sent to instance 0x7939c910'
这是错误所引起的手势识别器?在继承导航控制器之前,它工作正常。更重要的是,检测主题已更改并更改导航栏颜色的更好方法是什么?
提前致谢!
如果'黄昏()'没有参数,将选择器更改为'黄昏',摆脱':'。 – vacawama
@vacawama修正了上面的代码 – cyril
'func dusk(notification:NSNotification)''customNavigationController'内的顶层方法(即它不在另一个函数里面,比如'viewDidLoad')? – vacawama