2017-03-13 14 views
1

私はストーリーボードに基本的なナビゲーション設定を持っています:UINavigationControllerに埋め込まれたバニラUIViewControllerです。私のメインVCには、それぞれUIViewControllerサブクラスになる2つのボタンがあります:LabelledVC。サブクラスのviewDidAppear(_:)方法では、私は、ナビゲーションアイテムのtitleViewカスタムイメージの設定:のLabelledVC何らかの理由でviewDidAppear()はビューコントローラがナビゲーションスタックにプッシュされる前に呼び出されます

class LabelledVC: UIViewController { 

    override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    let logoImage = UIImage(named: "apple") 
    let logo = UIImageView(image: logoImage) 

    logo.contentMode = .scaleAspectFit 
    logo.frame = CGRect(x: 0, y: 0, width: 32, height: 32) 

    navigationItem.titleView = logo 
    } 

} 

viewDidAppear(_:)方法は、(それがナビゲーションスタックにプッシュされ前)とき、アプリケーションのロードと呼ばれていますそれは私には意味をなさない。プロジェクトhereが見つかります。

enter image description here

+2

プロジェクトでは、** ViewController **はLabelledVCによってサブクラス化されています。 –

答えて

2

あなたMainVCはLabelledVCから継承されています。だからアプリケーションがこのコントローラを表示したときにシステムがviewDidAppearViewControllerで呼び出すのですが、あなたはこのメソッドを実装していないので、このメソッドを親クラスから呼び出します。

enter image description here

もうひとつ。あなたの例では、設定する最も良い場所はです。NavigationItemです。viewDidLoadメソッドです。

+0

一言...私はそれを逃したとは思わない。 :-( ありがとうございました。 – RobertJoseph

関連する問題