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 1W 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.
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:
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.
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"];