2013-08-07 3 views
8

Ich habe eine funktionierende App, die eine tabarcontrollerbasierte App ist. Der erste Viewcontroller ist ein uitableviewcontroller. Alle 3 Registerkarten haben oben eine Navigationsleiste, die ich aus der Objektbibliothek hinzugefügt habe. Dies ist, was die App wie folgt aussieht:Warum entfernt das Hinzufügen von Bildanzeige zur Navigationsleiste im Storyboard navbar?

Original UITableViewController in first tab with UINavbar

Dann habe ich das Bild auf dem navbar als zentriert Logo setzen wollten. So sah ich mich um SO und fand Code, der wie folgt aussieht:

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

oder

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

Aber es Arbeit den Ball hielt. Ich habe gerade eine leere weiße Navigationsleiste. Also beschloss ich, eine UIImageView auf die navbar hinzufügen, indem Sie es in der Objektbibliothek ziehen, aber aus irgendeinem Grund die navbar macht verschwinden und ich am Ende mit diesem:

After adding UIImageView to UINavBar

Warum geschieht das?

Antwort

21

Die Art, wie Sie es tun, wird in Interface Builder nicht unterstützt. Ich würde Sie ermutigen, file a radar zu unterstützen, das zu tun. Sie können dies auf zwei verschiedene Arten erreichen, eine in Code, die andere in IB.

Durch Interface Builder

Sie können eine UIView Instanz aus der Objektbibliothek ziehen und es in der Mitte der Navigationsleiste fallen. Dadurch wird die Ansicht im Titelbereich der Leiste angezeigt. Sie können dann eine UIImageView Instanz nehmen und sie als Unteransicht der Ansicht hinzufügen, die Sie gerade hinzugefügt haben.

über Code

können Sie die UIImageView durch Code festgelegt, mit der titleView Eigenschaft Ihres Navigationspunkt des View-Controller:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

EDIT:

Um es auf einstellen Auf der linken Seite müssen Sie die Bildansicht in eine UIBarButtonItem umbrechen. Sie können dies in IB mit dem gleichen Verfahren wie oben beschrieben tun, oder in Code wie dem folgenden:

+0

Ok, nur eine letzte Sache. Wie mache ich es auf der linken Seite der Bar und nicht in der Mitte? – marciokoko

+0

@mariokokoko aktualisiert. –

+0

Ein letzter Zweifel, da ich eine UINavigationbar auf meinen UIViewController, der sich in einem uitabbarcontroller befindet, fallen gelassen habe, um diesen Code funktionieren zu lassen, muss ich zuerst die Referenz der Navigationsleiste im Code abrufen, richtig? – marciokoko

Verwandte Themen