У меня есть контроллер табличного представления с распознающим жестом, который запускает 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)
, содержащую новый цвет для навигационную панель, которую я связал с раскадровки.
Вот мой пользовательский класс контроллер нав:
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'
эта ошибка была вызвана распознаватель жестов? Он отлично работал, прежде чем подклассифицировать навигационный контроллер. Что еще более важно, что было бы лучшим способом обнаружить, что тема была изменена и изменилась цвет панели навигации?
Заранее благодарен!
Если 'dusk()' не принимает параметров, измените селектор на 'dusk', избавьтесь от': '. – vacawama
@vacawama исправил вышеуказанный код – cyril
Является ли 'func dusk (уведомление: NSNotification)' метод верхнего уровня внутри 'customNavigationController' (т. Е. Он не находится внутри другой функции, такой как' viewDidLoad')? – vacawama