/ / Jak zmienić nazwę przycisku Wstecz UINavigationController? - iOS, uiviewcontroller, uinavigationcontroller, uinavigationitem

Jak zmienić nazwę przycisku wstecznego UINavigationController? - ios, uiviewcontroller, uinavigationcontroller, uinavigationitem

mam UIViewController i nawiguję z mojego pierwszego kontrolera widoku do drugiego kontrolera widoku i chcę zmienić nazwę przycisku widocznego na navigationcontroller za powrót ...

SecondViewController *secondController = [[SecondViewController alloc]
initWithNibName:nil
bundle:NULL];
[self.navigationController pushViewController:secondController  animated:YES];

teraz w drugim viewcontroller Chcę zmienić nazwę przycisku w navigationController.

Odpowiedzi:

32 dla odpowiedzi nr 1

W widokuWillAppear napisz to

self.navigationItem.title = @"List View";

I w ViewWilldisapper napisz to

self.navigationItem.title = @"Back";

Działa bez plansz.


179 na odpowiedź № 2

Jeśli chcesz to zrobić programowo, możesz to zrobić w następujący sposób:

Cel C

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];

[self.navigationItem setBackBarButtonItem:backItem];

Szybki

let backItem = UIBarButtonItem(title: "Custom", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem

Jeśli jednak wolisz korzystać z Konstruktora interfejsów, po prostu wybierz element UINavigationItem, dla którego chcesz ustawić przycisk Wstecz, i przejdź do inspektora atrybutów, aby zmienić tytuł przycisku Wstecz.

wprowadź opis obrazu tutaj

UWAGA: Ważne jest, aby pamiętać, że należy to skonfigurować w kontrolerze widoku, do którego powrócisz po stuknięciu przycisku Wstecz, a nie w obecnie widoczny kontroler widoku.


42 dla odpowiedzi nr 3

Istnieje prosty sposób, aby to zrobić w interfejsieBuilder lub Storyboarding. W nadrzędnym kontrolerze widoku po prostu ustaw atrybut „Przycisk Wstecz” elementu nawigacyjnego na dowolny tytuł. Oto przykład:

Ustaw przycisk Wstecz Tytuł kontrolera widoku potomnego z nadrzędnego kontrolera widoku

Widok tawerny Villiana będzie miał „Wstecz” jako tytuł przycisku Wstecz, tak jak właśnie ustawiliśmy w inspektorze atrybutów kontrolera nawigacyjnego rodzica (Najlepsze paski).


4 dla odpowiedzi № 4

W moim przypadku działało tylko uruchamianie kodu w głównym wątku, tak jak:

dispatch_async(dispatch_get_main_queue(), ^(void) {

self.navigationController.navigationBar.backItem.title = @"Custom Title";
});

3 dla odpowiedzi № 5

Swift 3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

Uwaga:Przycisk Wstecz należy do poprzedniego kontrolera widoku, a nie do tego, który jest obecnie wyświetlany na ekranie. Aby zmodyfikować przycisk Wstecz, należy go zaktualizować przed naciśnięciem na kontrolerze widoku, który zainicjował segue:


2 dla odpowiedzi № 6

W Szybki Rozwiązanie było bardzo proste,

Załóżmy, że jestem na ViewControllerA i przechodzę do ViewControllerB. Jeśli chcę zmienić nazwę przycisku Wstecz wyświetlanego na ViewControllerB, zrobię to w ViewControllerA,

self.title = "BackButtonTitle"

To jest to.


1 dla odpowiedzi № 7

Bardzo ważne jest, aby w widoku kontrolera opcja „Symulowane metryki” nie była wybrana jako „Wnioskowane”.

Próbowałem z „Brak” i wszystko w porządku!


1 dla odpowiedzi № 8

Spróbuj tego: -

NSArray *viewControllerArr = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousViewControllerIndex = [viewControllerArr indexOfObject:self] - 1;
UIViewController *previous;
if (previousViewControllerIndex >= 0) {
previous = [viewControllerArr objectAtIndex:previousViewControllerIndex];
previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStylePlain
target:self
action:nil];
}

1 dla odpowiedzi № 9

Możesz to osiągnąć, używając titleView z navigationItem

Swift 3 Answer

• Utwórz jedno rozszerzenie dla UINavigationItem jak poniżej

extension UINavigationItem {
func customTitle(title: String) {
let titleLabel = UILabel()
titleLabel.text = title
titleLabel.textColor = UIColor.white
titleLabel.textAlignment = .center
titleLabel.sizeToFit()
titleView = titleLabel
}
}

• W twoich kontrolerach viewDidLoad wykonaj następujące czynności

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
title = "Text For Back Button"
navigationItem.customTitle(title: "Title for your view controller")
}

0 dla odpowiedzi № 10

Jeśli korzystasz z Storyboard, możesz to zrobić w prosty sposób (działało to dla mnie dobrze).

  • Przejdź do swojej scenorysu
  • Wybierz, który UIViewController chcesz zmienić tekst przycisku wstecz.
  • Kliknij UINavigationItem na górze UIViewController. (ten z tytułem)
  • W prawym panelu wybierz inspektora atrybutów (czwarta ikona).
  • Teraz możesz ustawić tytuł, monit i przycisk Wstecz.

wprowadź opis obrazu tutaj

Źródło: http://pinkstone.co.uk/how-to-change-the-back-button-text-on-a-uinavigationcontroller-in-your-storyboard/


0 dla odpowiedzi № 11

W rzeczywistości możesz zmienić tytuł przycisku Wstecz

self.navigationItem.backBarButtonItem.title = @"NewName";

0 dla odpowiedzi № 12

Jeśli używasz odniesień do scenorysu, kontroler widoku może nie wyświetlać elementu nawigacyjnego w Konstruktorze interfejsów.

Ręczne przeciąganie paska nawigacji nie będzie działać, musisz przeciągnąć Element nawigacyjny

Będziesz wtedy mógł ustawić tytuł przycisku Wstecz. Tutaj również ustawiasz tytuł widoku.

Cytując Mick MacCallum:

UWAGA: Ważne jest, aby pamiętać, że należy to skonfigurować w kontrolerze widoku, do którego powrócisz po stuknięciu przycisku Wstecz, a nie w obecnie widoczny kontroler widoku.


0 dla odpowiedzi № 13

Można to zrobić na dwa sposoby.

Pierwszy sposób to kod programu:

Odpowiedź Jakimki Aleksieja jest najprostszym sposobem, To naprawdę działa (testowane na Xcode 8 + iOS 10)

Swift3:

self.navigationItem.backBarButtonItem?.title = "Your customized back title"

Uwaga: powinieneś wywołać powyższy kod w kontrolerze widoku źródłowego, a nie docelowym.

Drugi sposób to skorzystanie z lokalizacji scenorysu za pośrednictwem Main.strings plik,

"nnnnnnn.title" = "localized string";

Nnnnnnn oznacza identyfikator obiektu BackBarButtonItem w pliku źródło kontroler widoku (nie docelowy kontroler widoku!)

Musisz ustawić właściwość „wstecz” elementu paska nawigacji, automatycznie utworzy BarButtonItem, znajdziesz jego identyfikator obiektu.

Niestety nie udało mi się przesłać zrzutów ekranu.


0 dla odpowiedzi № 14

Miałem dość złożoną scenariusz z wieloma kontrolerami nawigacyjnymi, a mój klient chciał, aby wszystkie przyciski Wstecz powiedziały „Wstecz”

Przejrzałem w Konstruktorze interfejsów i umieściłem „Wstecz” w polu przycisku Wstecz każdego elementu UINavigationItem.

Nie pracowałem przy każdej zmianie sceny!

Problem polegał na tym nie każdy kontroler widoku w serii ujęć miał UINavigationItem.

Naprawiłem to, przeciągając nowy UINavigationItem na każdy UIViewController, który go nie miał, i ustawiłem wszystko pól przycisku Wstecz do „Wstecz”

Uważaj na kontrolery, które nie otrzymują automatycznie własnego UINavigationItem.


0 dla odpowiedzi № 15

Swift 4

W Twoim UIViewController, ustaw to:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton

-1 dla odpowiedzi № 16

Spróbuj poniżej kodu:

[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];