iPhone: Gezinme Çubuğu Başlığını Ayarlama


87

Hey millet. İPhone geliştirme konusunda hala oldukça yeniyim ve Gezinme Çubuğumun başlığını nasıl değiştireceğimi bulmakta biraz sorun yaşıyorum. Bu sitedeki başka bir soruda birinin kullanılması önerildi:

viewController.title = @"title text";

ama bu benim için çalışmıyor ... Bunu başarmak için bir UINavigationController eklemem gerekir mi? Ya da UIViewController alt sınıfımdan bir çıkış olabilir mi? Yardımcı oluyorsa, gezinti çubuğunu IB'de tanımladım ve UIViewController alt sınıfımda başlığını ayarlamaya çalışıyorum. Bu, başımı ağrıtan o basit şeylerden bir diğeri. Self.title = @ "title text" koyarak; içinde viewDidLoadve initWithNibNameişe yaramadı. Neler olduğunu ve bunu nasıl doğru yapacağını bilen var mı?

Teşekkürler!

Yanıtlar:


154

Özelliğin etkili olması için görünüm denetleyicisinin bazı UINavigationController öğesinin alt öğesi olması gerekir .title. UINavigationBar sadece bir görünüm ise, başlığı içeren bir gezinme öğesine basmanız veya son gezinme öğesini değiştirmeniz gerekir:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

veya

bar.topItem.title = @"title text";

8
Vay. Son bir saatimi forumları ve belgeleri tarayarak bunu anlamaya çalışarak geçirdim ve kendimi bundan daha karmaşık olacağına ikna ettim. Bu kod çok basit ve IB'de hiçbir şeyi yeniden kurcalamak zorunda değildim. Mükemmel! KennyTM, harikasın. Hatırlarsam, NSDate sorumu da cevapladınız ve beni sözlükleri araştırmaya yönlendirdiniz. Bu sitedeki yeni favori kişimsin. Tüm yardımlarınız için çok teşekkürler!
Arthur Skirvin

5
Yorumun beni güldürdü ve merak etti: Burada hiç kimse SO'da arkadaş oldu mu? Burada genellikle herkes çok yararlıdır ancak (o / o sinirli ne zaman tabii ki asker hariç) herhangi bir insan duygularını ifade görünmüyor
maltalef

Film şeridi ile uyumlu bir çözüm için Sorin'in yanıtına bakın.
devios1

Bana gerçekten çok zaman kazandıran cevabınız için teşekkürler. :) @kennytm
jerry_sjtu

124

hepsini viewDidLoadyönteminde kodla UIViewControlleryapıyorsanız, yalnızca eklemelisinizself.title = @"title text";

bunun gibi bir şey:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

ayrıca deneyebilirsin self.navigationItem.title = @"title";

ayrıca navigationItem'inizin boş olup olmadığını kontrol edin ve navigasyon çubuğuna özel bir arka plan ayarladıysanız, başlığın onsuz ayarlanıp ayarlanmadığını kontrol edin.


@ SorinA, Teşekkürler. Gezinme çubuğunun adını vermenin daha iyi bir yolu budur.
Tirth

33

Kullanmanın bir sorunu var self.title = @"title";

Gezinme Çubuğunu Sekme çubuğuyla birlikte kullanıyorsanız, yukarıdaki satır da Sekme Çubuğu Öğesinin etiketini değiştirir. Bundan kaçınmak için @testing'in önerdiği şeyi kullanın

self.navigationItem.title = @"MyTitle";

13

Eğer navbar başlığını değiştirmek istiyorsanız (navbar geri düğmesi başlığını değil!) Bu kod çalışacaktır.

self.navigationController.topViewController.title = @"info";

9

Bir tabBar denetleyicisi içindeki navBar'ın başlığını değiştirmek istiyorsanız, şunu yapın:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

viewDidAppear, bunu çözmeye çalıştıktan 2 saat sonra benim için hile yaptı. Teşekkürler :)
Tchelow

topItem.title, gezinme çubuğu başlığı olabilir veya olmayabilir. Geri düğmesi olmayan en üst düzey ekran ise, başlığı ayarlayacaktır. Ancak bir geri düğmeniz varsa, topItem.title aslında geri düğmesi başlığıdır.
user2962499

5

Navigasyon tabanlı uygulamamda şunu yapıyorum:

myViewController.navigationItem.title = @"MyTitle";

4

TabbarController'a entegre bir navigasyon kontrol cihazım vardı. Bu çalıştı

self.navigationItem.title=@"title";

4

Varsayılan olarak, gezinme denetleyicisi 'topitem' başlığını görüntüler

böylece appdelegate'inizin viewdidload yönteminde bunu yapabilirsiniz. Test ettim ve işe yarıyor

navController.navigationBar.topItem.title = @"Test";

2
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

Bu kod çalıştı.


SO'ya hoş geldiniz ve gönderi için teşekkürler. Bu bilgiyi bir yorum olarak göndermeniz daha iyi olur, daha fazla bilgi için lütfen Nasıl Cevaplanır'a bakın.
Serge Belov

2

Storyboard'larla çalışıyorsanız, denetleyiciye tıklayabilir, özellikler sekmesine geçebilir ve orada başlık metnini ayarlayabilirsiniz.


1

Sanırım dinamik bir başlığa ihtiyacınız var, bu yüzden onu IB'ye koymuyorsunuz.

Ve viewController nesnenizin NIB'de belirtilen nesne olduğunu varsayıyorum?

Belki de IB'de kukla bir değere ayarlamayı denemek ve sonra hangi denetleyicinin kukla değere sahip olduğunu görmek için yöntemlerde hata ayıklamak - başlık olarak göründüğünü varsayarak ...


1

TableViewController.m içinden:

self.navigationController.navigationBar.topItem.title = @ "Blah blah Bazı Harika başlık";


1

Dışarıdaki tüm Swift'lileriniz için, bu benim için mükemmel bir şekilde çalıştı. Başlığı belirlemenin en kısa yollarından biri de bu:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.