2013-08-07 5 views
8

Tabbarcontroller tabanlı bir uygulama olan çalışan bir uygulama var. İlk viewcontroller bir ubleviewcontroller. Tüm 3 sekmelerin üstünde, nesne kütüphanesinden eklediğim bir gezinme çubuğu bulunur. Hikaye panosunda gezinme çubuğuna resim görünümü ekleme navbar'ı neden kaldırıyor?

Original UITableViewController in first tab with UINavbar

Sonra bir merkezli logo olarak gezinme çubuğu üzerindeki görüntüyü ayarlamak istedik: Bu gibi uygulama görüntüsü. Bu yüzden etrafında SO baktı ve şöyle bir kod buldum: işe yaramadı

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

veya

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

Ama. Az önce boş bir beyaz çubuk aldım.

After adding UIImageView to UINavBar

Bunun nedeni nedir: Bu yüzden navbar kaybolur ve bu ile bitirmek yapar nedense nesne kütüphanesinden ama bunu sürükleyerek Menü ye bir UIImageView eklemeye karar?

cevap

21

Bunu yaptığınız şekilde, Arayüz Oluşturucu'da desteklenmez. Bunu desteklemek için sizi file a radar'a teşvik ediyorum. Bunu iki farklı yolla, biri kodda, diğeri IB'de yapabilirsiniz. Interface Builder sayesinde

Sen nesne kitaplığından bir UIView örneğini sürükleyip gezinme çubuğunda merkezine bırakabilirsiniz. Bu, çubuğun başlık alanı içindeki görünümü ayarlayacaktır. Ardından, UIImageView örneğini alıp eklediğiniz görünümün alt görünümü olarak ekleyebilirsiniz. Kuralları aracılığıyla

Sen görünüm kontrolörün navigasyon öğenin titleView özelliğini kullanarak, kod üzerinden UIImageView ayarlayabilirsiniz:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

DÜZENLEME:

üzerine ayarlamak amacıyla Sol taraftaki görüntüyü UIBarButtonItem içinde sarmanız gerekecektir. Bunu IB'de yukarıda açıklanan prosedürle veya aşağıdaki gibi bir kodla yapabilirsiniz:

- (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

Tamam, son bir şey. Barın sol tarafında ve merkezde olmamasını nasıl sağlarım? – marciokoko

+0

@marciokoko güncellendi. –

+0

Son bir şüphe, UINavigationbar'ı bir uitabbar denetleyicisinin içinde bulunan UIViewController'a bıraktığım için, bu kodun çalışması için, önce kodda gezinti çubuğu referansını almam gerekiyor, doğru mu? – marciokoko