Gezinme başlığını program aracılığıyla değiştirme


188

Başlığında bir gezinme çubuğum var. Yeniden adlandırmak için metni çift tıkladığımda, aslında bir gezinme öğesi olduğunu söylüyor, bu yüzden olabilir.

Gibi kodu kullanarak metni değiştirmeye çalışıyorum:

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

Bu benim kodum değil, sadece nasıl çalışacağını gösteriyor.

Düğmeye her bastığımda başlığın değişmesini istiyorum.

Yanıtlar:


540

Görüntülenen görünüm denetleyicisinin başlığını değiştirerek başlığı değiştirebilirsiniz :

viewController.title = "some title"

Normalde bu, görünüm denetleyicisine yüklendiğinde yapılır:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

Ancak, bu yalnızca görünüm denetleyiciniz bir UINavigationController'a katıştırılmışsa çalışır. Ben son derece bunu yerine bir gezinti çubuğu kendiniz oluşturmanızı öneririz. Kendiniz bir gezinme çubuğu oluşturmakta ısrar ediyorsanız, başlığı şu şekilde değiştirebilirsiniz:

navigationBar.topItem.title = "some title"

1
ViewController.type öğesinin title adlı bir üyesi yoktur. Aldığım hata bu.
Yükselen

2
Doğrudan sınıfta çağırmazsınız. Bunu UIViewController alt sınıfının bir örneği olarak adlandırıyorsunuz
drewag

Evet, ViewControllersınıfın kendisini ifade eder. Bir başvurmak gerekir örneğinin arasında ViewController. Sınıfınızdaki bir yöntem içinden viewDidLoad, bunu kullanarak yapabilirsiniz self. Bir sınıf ve örnek arasındaki farkı bilmiyorsanız, bunun ne olduğunu öğrenmenizi önemle tavsiye ederim. Bu makale yardımcı olacaktır.
drewag

Xcode da bir cazibe gibi çalışır .. sadece küçük bir değişiklik -> self.title = @ "bazı başlık";
Özet

self.title = "başlık" benim için çalıştı. Teşekkür ederim ! 'NavigationController? .NavigationItem.title = "Bazı başlık" deniyorum. neden işe yaramadığından emin değilim. (Katıştırılmış gezinti denetleyicisine ek olarak, başlığı görüntülemek için yerleştirdiğim bir gezinme öğem var). Hala çalışması gerektiğini düşünüyorum, ama neden bilmiyorum. Bir kez daha kurtarmaya yığın taşması!
Naishta

68

Aşağıdakileri deneyin viewDidLoad

self.navigationItem.title = "Your Title"

1
Benim için çalış. iOS 11.4
Antony Wong

13

Aşağıdaki kod Xcode 7 ile benim için çalışıyor:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

10

Bunun işe yaradığını gördüm:

navigationItem.title = "Title"

UINavigationController öğesinin alt öğesi olan bir görünüm denetleyicisinde başlığı nasıl ortalarsınız? Nedense metin sola hizalanır. var customTitle = self.navigationController?.visibleViewController?.navigationItem customTitle?.title = "Some Title"
bibscy

5

ayrıca Navigation Barmanuel olarak oluşturmaya çalışırsanız bu kod size yardımcı olacaktır.

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}

4

Normalde, en iyi uygulama başlığı UIViewController. Bunu yaparak UINavigationItem, aynı zamanda ayarlanır. Genel olarak, bu, UINavigationBarhiçbir şeyle bağlantılı olmayan bir programı programlı olarak ayırmak ve başlatmaktan daha iyidir .

İçin UINavigationBartasarlanan bazı avantajları ve işlevleri kaçırırsınız . İşte size yardımcı olabilecek belgelere bir bağlantı . Gerçek çubukta ve a'da ayarlayabileceğiniz farklı özellikleri tartışır UINavigationItem.

Unutmayın:

  1. Geri düğmesi işlevini kaybedersiniz (kendiniz kablolamadığınız sürece)
  2. Yerleşik "geri kaydırmak için sol taraftan sürükleyin" hareketi iptal edilir

UINavigationControllero senin arkadaşların.


4

Kullanan insanlar için doğru cevap olabilir

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}

3

Hızlı 3

Film şeridinde gezinme çubuğuyla (Nesne Tarayıcısından) gelen gezinme başlık çubuğu öğesi için bir çıkış oluşturdum. Sonra aşağıdaki hattı dava ettim:

navigationBarTitleItem.title = "Hello Bar"

2

Başlığı, bir gezinme denetleyicisine katıştırılmış bir Sayfa Görüntüleme Denetleyicisinin alt görünüm denetleyicisinden değiştirmek isterseniz, şöyle görünür:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}

1

Eğer bir varsa NavigationControllerbir gömülü içini TabBarControllerBakın aşağıdaki:

super.tabBarController?.title = "foobar"

resim açıklamasını buraya girin

Hata ayıklama komut dosyalarıyla bu tür hatalar ayıklayabilirsiniz. Hiyerarşideki her görünür / gizli görünümü yazdırmak için Chisel pvc komutunu deneyin .


0

Swift 4'te:

Hızlı 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

Umarım yardımcı olur, saygılar!


2
Bu, kabul edilen cevabın sadece yarısıdır. Ayrıca, hiçbir şeyin değişmediğini söylüyorsanız, neden bir şey yayınlasınız ?! Lütfen sil.
Eric Aya

@ Moritz sen moderatör müsün? Evet derseniz silerim, değilse silmeyeceğim.
Radames E. Hernandez

1
Gerçekten mi diyorsun?, Üstümde 4 tamamen eşit cevap var, o zaman neden benimle gelip bana benimkileri silmemi söylüyorsun? Toplumu destekleyen güvenilir bir kullanıcıyım, sadece cevapları tekrarlayarak dolaşmıyorum. Bu soruyu güncelleştirilmiş hızlı bir sürümle güncellemek istedim.
Radames E. Hernandez

3
Cevabınızda güncellenmiş bir şey yok. Bu, kabul edilen cevapla aynı kod, “Normalde bu görünüm yüklendi” bölümü ...
Eric Aya

0

Sekme çubuğu da başlığını değiştirmek için kullandığından gezinme çubuğunda başlık sağlamak için self.navigationItem.title = "Your Title Here"over kullanmayı tercih ederim . Aşağıdaki kodu bir kez denemelisiniz.self.title = "Your Title Here"self.title

Not: herhangi bir şey yapmadan önce süper görünüm yaşam döngüsünü çağırmak gerekir.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

0

Swift 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}

0

Swift 5.1

// NavigationBar Başlığını Programlı ve Dinamik Olarak Ayarlama

Not: Önce NavigationControllerItem'i ViewControllerYour'a ekleyin, sonra ViewController.swiftdosyalarına gidin ve Bunu Kopyalayıp Yapıştırın viewDidLoad().

navigationItem.title = "Your Title Here"

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.