Итак, у меня есть эта настраиваемая позиция навигационной панели, которую я хотел бы подклассировать и использовать в других ViewControllers
. Проблема в том, что в баре Item также есть observer
, который я хочу добавить на ViewDidAppear
и удалить observer
по телефону ViewDidDisappear
. Как я могу сделать subclass
элемент бара вместе с observer
. И включить его в каждый из моих ViewControllers
вместо дублирования кода?Быстрая пользовательская панель навигации Пункт с Observer
Текущий код:
В каждом ViewController
:
override func viewWillAppear(animated: Bool) {
if (!observingDefaults) {
defaults.addObserver(self, forKeyPath: Constants.General.kConnectedToPC, options: NSKeyValueObservingOptions(), context: nil)
observingDefaults = true
}
self.updateConnectionIcon()
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
if (observingDefaults) {
defaults.removeObserver(self, forKeyPath: Constants.General.kConnectedToPC)
observingDefaults = false
}
}
Мой добавочный Nav Bar Предмет:
extension UIViewController {
func updateConnectionIcon() {
self.navigationItem.rightBarButtonItem = nil
let isConnected = NSUserDefaults.standardUserDefaults().boolForKey(Constants.General.kConnectedToPC)
let button = UIButton()
if isConnected {
button.setImage(UIImage(named: "BluetoothEnabled")?.imageWithRenderingMode(.AlwaysTemplate), forState: UIControlState.Normal)
} else {
button.setImage(UIImage(named: "BluetoothDisabled")?.imageWithRenderingMode(.AlwaysTemplate), forState: UIControlState.Normal)
}
button.frame = CGRectMake(0, 0, 23, 31)
button.tintColor = UIColor.whiteColor()
button.userInteractionEnabled = false
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
}
}
Во всяком случае, я могу добавить верхнюю часть к нижней кода, так что я можно просто вызвать updateConnectionIcon() в каждом ViewController
?
Да. Спасибо! – KotaBear233
Можете ли вы привести небольшой пример? – KotaBear233
http://www.tutorialspoint.com/swift/swift_inheritance.htm – Sandy