0
このカスタムナビゲーションバーアイテムは、サブクラス化して他のViewControllers
で使用します。問題は、Bar ItemにもViewDidAppear
に追加したいobserver
があり、observer
をViewDidDisappear
に削除することです。 subclass
バーアイテムはobserver
と一緒にどうすればできますか?コードを複製するのではなく、私のViewControllers
のそれぞれにそれを含める?オブザーバを使用したスウィフトカスタムナビゲーションバーアイテム
現在のコード:各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
}
}
ナビゲーションバーの項目のための私の拡張子:
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
}
}
とにかく私は、下のコードに上半分を追加することができますので、私それぞれViewController
のupdateConnectionIcon()を呼び出すことができますか?
はいそうです。ありがとうございました! – KotaBear233
小さなサンプルを提供できますか? – KotaBear233
http://www.tutorialsp.com/.com/swift/swift_inheritance.htm – Sandy