2013-08-07 16 views
8

私はtabbarcontrollerベースのアプリケーションである働くアプリケーションを持っています。最初のviewcontrollerはuitableviewcontrollerです。 3つのタブにはすべて、オブジェクトライブラリから追加したナビゲーションバーが上部にあります。これは、アプリは次のようになります。storyboardのナビゲーションバーに画像ビューを追加するとnavbarが削除されるのはなぜですか?

Original UITableViewController in first tab with UINavbar

その後、私は中央にロゴとしてナビゲーションバーに画像を設定したいです。だから私はSOの周りを見て、このようなコードを見つけました:

UIImage *image = [UIImage imageNamed:@"icon57.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 
self.navigationItem.titleView = imageView; 

または

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"icon57.png"] forBarMetrics:UIBarMetricsDefault]; 

しかし、それは仕事をdidntの。私はちょうど空白の白いナビゲーションバーを持っています。だから私は、オブジェクトライブラリからではなく、それはナビゲーションバーが消えなり、私はこれで終わる何らかの理由でそれをドラッグすることで、ナビゲーションバーにUIImageViewを追加することにしました:

After adding UIImageView to UINavBar

これはなぜ起こるのでしょうか?

答えて

21

あなたが行っている方法は、Interface Builderではサポートされていません。私はそれを行うことをサポートするためにfile a radarにあなたを励ますでしょう。これは、コード内に1つ、IBに2つの異なる方法で実行できます。

Interface Builderを通じ

あなたは、オブジェクトライブラリからUIViewインスタンスをドラッグして、ナビゲーションバーの中央にドロップすることができます。これにより、バーのタイトル領域内にビューが設定されます。その後、UIImageViewインスタンスを取得し、それを追加したばかりのビューのサブビューとして追加できます。コードを

はあなたのビューコントローラのナビゲーション項目のtitleViewプロパティを使用して、コードを通じてUIImageViewを設定することができます。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *logo = [UIImage imageNamed:@"logo.png"]; 
    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:logo]; 
} 

EDIT:

にそれを設定するために左側には、UIBarButtonItemの画像ビューをラップする必要があります。上記の手順と同じ手順、または次のようなコードを使用してIBで実行できます。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *logo = [UIImage imageNamed:@"logo.png"]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:logo];  
    UIBarButtonItem *imageButton = [[UIBarButtonItem alloc] initWithCustomView:imageView]; 

    self.navigationItem.leftBarButtonItem = imageButton; 
} 
+0

どのようにしてそれをセンターの中央ではなく、バーの左側に置くのですか? – marciokoko

+0

@marciokokoが更新されました。 –

+0

UINavigationbarをuitabbarcontrollerのUIViewControllerにドロップしてから、そのコードの作業を行うために、最初にコード内でナビゲーションバーの参照を取得する必要がありますか? – marciokoko

関連する問題