2016-08-16 3 views
0

私のアプリケーション全体でナビゲーションコントローラの固定状態を設定しようとしています。私はApp Delegateで宣言された色を取得してアプリ全体でうまくやっていますが、ロゴをtitleViewとして設定しようとしています。私は個々のビューコントローラでこれをグローバルにするのではなく、簡単に行うことができます。ここでNavigationItemを設定するtitleView Imageスクロールでグローバルに

は、私は私のアプリの委任に持っているものです。

let logo = UIImage(named: "Logo") 
    let imageView = UIImageView(image: logo) 
    imageView.frame = CGRect(x: 0, y: 0, width: 0, height: 20) 
    imageView.contentMode = UIViewContentMode.ScaleAspectFit 

    // It's this line which errors and doesn't work 
    navigationItem.titleView = imageView 

はアップデート:私の下に答えるため

おかげで、今説明したように、これは不可能であることを理解しています。 imageViewの作成と設定をグローバル関数に入れて、必要なビューのそれぞれに1行だけを呼び出します。私はこれが上記のすべてを各ビューで書き換えるよりも効率的だと考えています。

答えて

0

AppDelegateには、navigateItemというメンバー変数がありません。これがエラーの原因です。 navigationItemはUIViewControllerのメンバ変数で、ViewControllerで使用できました。 Appleのドキュメントから:

ビューコントローラがナビゲーションコントローラにプッシュされたときにこれを表すために作成されたユニークなインスタンスのUINavigationItemです。最初にプロパティにアクセスするときは 、UINavigationItemオブジェクトは です。したがって、ビューコントローラを表示するためにナビゲーションコントローラを使用していない場合は、このプロパティにアクセスしないでください。 にナビゲーション項目が設定されていることを確認するには、 プロパティをオーバーライドし、最初に がビューコントローラの 初期化コードでアイテムにアクセスまたは作成するときに、バーボタンアイテムを作成するコードを追加します。

+0

ありがとうございました。これを行うためのベストプラクティスは何と考えていますか? – dylankbuckley

+0

ホームViewControllerにアイコンを表示させたい場合は、ホームViewControllerに置くことができます。 –

関連する問題