Geri düğmesindeki metin nasıl değiştirilir


90

Varsayılan olarak geri düğmesi üzerinde metin olarak bir görüntü denetleyicisinin başlığını kullanır. Bir görünüm denetleyicisinin başlığını değiştirmeden geri düğmesindeki metni değiştirebilir miyim? Buna ihtiyacım var çünkü hangi başlığın görüntülenemeyeceği kadar uzun olan bir görünüm denetleyicim var ve bu durumda geri düğmesi için bir başlık olarak sadece "Geri" yi görüntülemek istiyorum.

Çalışmayan aşağıdakileri denedim:

self.navigationItem.leftBarButtonItem.title = @"Back";

Teşekkürler.


3
Geri düğmelerinin bir nedenle başlıkları olduğunu unutmayın. Başlığı "Geri" olarak değiştirerek, kullanıcının düğmenin neye geri döndüğü hakkındaki bilgileri çalmış oluyorsunuz.
Simon

Yanıtlar:


167

Deneyin

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

Ben bakarak bulundu backBarButtonItem Apple'ın docs docs UINavigationItem .


1
Maalesef şu anda bunu test etme şansım yok, ancak bu yerleşik Geri düğmelerinin sol sivri şeklini uyguluyor mu yoksa UIBarButtonItem'in varsayılan dikdörtgen şeklini mi koruyor?
Marco

Aslında emin değilim. BackButton özelliğini ayarladığınızdan beri sadece geri düğmesi şeklini otomatik olarak tutacağını varsayıyorum, ancak öğrenmek için test etmeniz gerekir. Ben de merak ediyorum.
Marc W

2
Evet, işe yaradı! Evet, başlığı değiştirir ve evet, şekli kaydeder. Yardım için teşekkürler.
Ilya Suzdalnitski

1
Not: geri düğmesi iki kez tutulur [1x ayırmadan, 1x mülkün tutucusundan]. Ancak geri düğmesini değiştirmezseniz zararsızdır.
Kelvin

29
Aşağıdaki Marco'nun yorumuna bakın - bunu, yeni bir şeyi itmek üzere olan denetleyicide çağırmalısınız, denetleyicinin itilmesi değil.
Bill

97

Marc W'nin yaklaşımı, onu hangi denetleyiciye uygulayacağımı bulduğumda harika çalıştı: üstteki değil, yeniden adlandırılana. Yani bu gezinme yığınıysa:

(bottom)  ControllerA -> ControllerB  (top)

... ve DenetleyiciB en üstte olduğunda görüntülenen geri düğmede DenetleyiciA'ya daha kısa bir başlık vermek isterseniz, özellik değişikliğini DenetleyiciA'ya uygularsınız .

Yani self.title, diğer sol / sağ-çubuk-düğme ayarlayıcılar gibi değil , bağlamında daha fazla .


13
Bu çok önemli bir detay.
Bill

4
wcochran, film şeridi ile çalışır, sadece ana denetleyicinin Geri Düğmesini ayarladığınızdan emin olun. Dolayısıyla, denetleyici B'yi (film şeridi geçişi aracılığıyla) gösteren denetleyici A'ya sahipseniz, denetleyici B'deki Geri düğmesi için metni özelleştirmek yerine, film şeridi düzenleyicisinde denetleyici A için "Geri Düğmesi" özelliğini ayarlamanız gerekir.
kesintiye

Teşekkürler Marco. Bu soru hakkında hissettiğim şey, herkesin cevap vermeye (ve doğru cevap vermeye) çalıştığı, ancak sorulan soru için değil. Temel olarak çiviyi kafanıza ve doğru bir şekilde vurursunuz. Bunun için teşekkürler!
theiOSguy

Önemli ayrıntılar için +1. BU cevabı anlamadığınız sürece yukarıdaki cevap sizin için işe yaramayacaktır.
baptzmoffire

Haklısın, yeni MacBook One'daki klavyeye alışmak biraz zor.
Mason G. Zhwiti

48

Bunu film şeridinde yapabilirsiniz. Geri dönmek istediğiniz görünüm denetleyicisini bulun (uzun başlıklı), Gezinme Öğesi'ni seçin ve Nitelik Denetçisi'ni (Alt + Cmd + 4) açın, özel Geri Düğmesi başlığını ekleyin.

görüntü açıklamasını buraya girin


Tüm geri düğmelerinin önceki denetleyicinin gezinme başlıkları yerine Metin "Geri" olmasını istediğim için tam da ihtiyacım olan şey buydu.
Dave

8
Sadece not etmek gerekirse, geri düğmesi metni, şu anda göstermiş olduğunuz görünüm denetleyicisinde değil, bir sonraki denetleyicinin itildiği görünümde ayarlanır.
Darbio

Bu iyi ve basit bir çözümdür, ancak lütfen tüm geri düğmelerinizin adını "Geri" olarak değiştirmeyin, Apple'ın HIG'ine aykırıdır ve geri düğmesinin amacının bir kısmını bozar. :(
Samuel Goodwin

Harika çalıştı. Storyboard dosyasını KAYDEDİNİZ. İlk denemem işe yaramadı çünkü Storyboard'un kaydedilmediğini fark etmedim! Ve evet, geldiğiniz görünüm denetleyicisindeki GERİ düğmesini değiştiriyorsunuz!
EricWasTaken

Pekala, peki ya hiçbir metin olmadan sadece oku bırakmak istersem? :)
Iurii Vasylenko

40

Teşekkürler Marco ... bana yardımcı oldu ...

İşte yaptığım şey.

Farklı görünümlere gitmek için bir tableView kullanıyorsanız ... kodu yerleştirin:

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

Sizin didSelectRowAtIndexPathyönteminizde ... ilk Kontrolörün ... Kontrolör A.

Denetleyici B'ye gittiğinizde, düğmenin başlığı "Geri" olacaktır.


1
Teşekkür ederim canım @ Ben. Tam olarak aradığım buydu :).
Arslan

12

Geri düğmesi, metnini üst görünüm denetleyicisinin başlığından alır.

Üst görünüm denetleyicisinde (geri düğmesine dokunduğunuzda görünen görünüm denetleyicisi), kendi başlığını geri düğmesinde istenen metin olarak ayarlayın.

Örneğin, bir RootViewControllersınıfımız olduğunu varsayalım. Tablo görünümünde bir hücreye tıkladığımızda, örneğini itiyoruz SecondViewController. SecondViewControllerÖrneğin geri düğmesinin "Ana Sayfa" olarak görünmesini istiyoruz.

içinde viewDidLoadyöntemine RootViewController.m :

self.title = @"Home";

içinde viewDidLoadyöntemine SecondViewController.m :

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];    

Geri düğmenizin "Geri" ifadesini okumasını istiyorsanız, üst öğe görünümü denetleyicisinin başlığını şu şekilde ayarlayın @"Back";


10

Bu benim için daha iyi çalışıyor. Deneyin :

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] 
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

1
Harika cevap mükemmel çalıştı. istisna olarak işaretlenmelidir.
Muhammad Rizwan

9

Film şeridi kullanıyorsanız:

  1. StoryBoard'u Aç
  2. Belge Anahattı penceresinde geri dönmek istediğiniz ViewController'ı bulun
  3. Bu ViewController'ın Gezinme Öğesine tıklayın
  4. Nitelikler gezgininde Geri Düğmesi değerini özel kutucuğunuza değiştirin

İşte bu, tadını çıkarın ...


5

Ve MonoTouch'da aşağıdaki çalışır (üst denetleyicinin ViewDidLoad'unda):

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);

3
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

Bu benim için çalıştı.


3

Üst görünüm denetleyicinizde, görünüm yüklendiğinde geri düğmesini ayarlayın:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    self.navigationItem.backBarButtonItem = 
       [[UIBarButtonItem alloc] initWithTitle:@"title" 
                                        style:UIBarButtonItemStylePlain 
                                       target:nil 
                                       action:nil];

}

autoreleaseEn son iOS sürümünün sonuna eklememiz gerekmediğine dikkat edin .

Bu yardımcı olur umarım!


1

[self.navigationController.navigationBar.backItem setTitle:@"back"];

Benim için çalışıyor. "Geri" yi başka bir şeyle değiştirebilirsiniz.


Kodla yanıt verirken, her zaman sağlanan kodla ilgili sorunun ne olduğunu ve kodunuzun sorunu nasıl düzelttiğini açıklayın.
Lukas Knuth

1

Bir unvana sahip olmak istemiyorsanız, bu benim için çalıştı!

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];

1
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

0

Sonunda bu cevapların neden ilk başta benim için işe yaramadığını anladım. Film şeridinde başlığı belirledim. Başlığı koda ayarladığımda. işe yarıyor!

self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

Gelecekte, sizin için işe yaramayan yanıta yorum olarak bunun gibi gönderiler yapmak isteyebilirsiniz.
Keith Smiley

0

Çözümüm, görünüm denetleyicisi gezinti yığınına itildiğinde başlığı ayarlamak ve itilen vc kapanmadan önce temsilci yöntemini kullanarak sıfırlamaktı:

Bu yüzden, diğer görünüm denetleyicisini şu şekilde ittiğimde görünüm denetleyicisini çağırırken başlık değişikliğini koyuyorum:

self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"];
self.pushedVC.delegate = self;   
[self.navigationController pushViewController:self.pushedVC animated:YES];
self.title = @"Back";

ve temsilci geri arama işlevinde (viewWillDissapear'da çağırdığım):

-(void)pushedVCWillClose:(PushedVC *)sender
{
    self.title = @"Previous Title";
}

0

Yalnızca Geri düğmesinin metnini değiştirmek ve orijinal sol ok şeklini korumak istemiyorsanız, aynı zamanda kullanıcı Geri düğmesine tıkladığında bir şeyler yapmak istiyorsanız, " CustomNavigationController " cihazıma bir göz atmanızı tavsiye ederim .


0

// Bunu, başlığı aşağıda gösterildiği gibi önceki görünüm denetleyicisinde ayarlayarak başarabilirsiniz

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for this view
        self.navigationItem.title = "My Title"

}

override func viewWillDisappear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for back button in next view 
        self.navigationItem.title = "Back"
}

0

Geri düğmesi başlığını değiştirmek için aşağıdaki koda bakın

InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES];

//Below code changed back button title on InformationVC page.
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil];
self.navigationItem.backBarButtonItem = backBarButton;`enter code here`


-1

Bu benim için çalıştı:

self.navigationController.navigationBar.topItem.title = "Back"
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.