Domyślnie przycisk Wstecz używa jako tekstu tytułu kontrolera widoku. Czy mogę zmienić tekst na przycisku Wstecz bez zmiany tytułu kontrolera widoku? Potrzebuję tego, ponieważ mam kontroler widoku, którego tytuł jest za długi do wyświetlenia iw tym przypadku chciałbym wyświetlić tylko „Wstecz” jako podpis przycisku Wstecz.
Próbowałem następujących rzeczy, które nie zadziałały:
self.navigationItem.leftBarButtonItem.title = @"Back";
Dzięki.
ios
iphone
cocoa-touch
uinavigationitem
Ilya Suzdalnitski
źródło
źródło
Odpowiedzi:
Próbować
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Znalazłem to, patrząc na dokumenty backBarButtonItem w dokumentach Apple dla UINavigationItem .
źródło
Podejście Marca W zadziałało świetnie, gdy zorientowałem się, do którego kontrolera go zastosować: do tego, którego tytuł zostanie zmieniony, a nie do tego na górze. Więc jeśli to jest stos nawigacji:
(bottom) ControllerA -> ControllerB (top)
... i chcesz nadać krótszy tytuł dla Kontrolera A na przycisku Wstecz wyświetlanym, gdy KontrolerB jest na górze , zastosuj zmianę właściwości do KontroleraA .
Więc jest to bardziej w kontekście
self.title
, a nie jak inne ustawiacze przycisków lewego / prawego paska.źródło
Możesz to zrobić w scenorysie. Znajdź kontroler widoku, do którego chcesz wrócić (ten z długim tytułem), wybierz jego element nawigacji i otwórz Inspektor atrybutów (Alt + Cmd + 4), wstaw niestandardowy tytuł przycisku Wstecz.
źródło
Dzięki Marco ... to mi pomogło ...
Oto co zrobiłem.
Jeśli używasz tableView do przechodzenia do różnych widoków ... umieść kod:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
W Twoim
didSelectRowAtIndexPath
metodzie ... pierwszego Kontrolera ... Kontrolera A.Po przejściu do kontrolera B przycisk będzie miał tytuł „Wstecz”.
źródło
Przycisk Wstecz wyciąga swój tekst z tytułu nadrzędnego kontrolera widoku.
W nadrzędnym kontrolerze widoku (kontrolerze widoku, który pojawia się po dotknięciu przycisku Wstecz), ustaw jego własny tytuł jako żądany tekst na przycisku Wstecz.
Na przykład, powiedzmy, że mamy
RootViewController
klasę. Kiedy klikamy komórkę w jej widoku tabeli, wypychamy instancjęSecondViewController
. Chcemy, aby przycisk WsteczSecondViewController
instancji brzmiał „Strona główna”.w
viewDidLoad
metodzie RootViewController.m :self.title = @"Home";
w
viewDidLoad
metodzie SecondViewController.m :UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton; [backButton release];
Jeśli chcesz, aby przycisk Wstecz brzmiał „Wstecz”, ustaw tytuł nadrzędnego kontrolera widoku na
@"Back"
;źródło
To działa lepiej dla mnie. Próbować :
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
źródło
Jeśli używasz scenorysu:
To jest to, ciesz się ...
źródło
A w MonoTouch działa następująco (w ViewDidLoad kontrolera nadrzędnego):
NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
źródło
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];
To zadziałało dla mnie.
źródło
W kontrolerze widoku nadrzędnego ustaw przycisk Wstecz podczas wyświetlania wczytywania:
- (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]; }
Zauważ, że nie musimy
autorelease
na końcu dołączać najnowszej wersji iOS.Mam nadzieję że to pomoże!
źródło
[self.navigationController.navigationBar.backItem setTitle:@"back"];
Mi to pasuje. Możesz zamienić „z powrotem” na coś innego.
źródło
Ten zadziałał dla mnie, jeśli nie chcesz mieć tytułu!
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
źródło
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
źródło
W końcu wiedziałem, dlaczego te odpowiedzi na początku nie działają dla mnie. Ustawiłem tytuł w storyboardzie. Kiedy ustawię tytuł na kodzie. to działa!
self.navigationItem.title = @"Main Menu"; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil]; [[self navigationItem] setBackBarButtonItem:backButton];
źródło
Moim rozwiązaniem było ustawienie tytułu, gdy kontroler widoku jest wypychany na stos nawigacji i zresetowanie go za pomocą metody delegata przed zamknięciem pchniętego vc:
Więc wstawiam zmianę tytułu w wywołaniu kontrolera widoku, gdy naciskam drugi kontroler widoku, na przykład:
self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"]; self.pushedVC.delegate = self; [self.navigationController pushViewController:self.pushedVC animated:YES]; self.title = @"Back";
oraz w funkcji wywołania zwrotnego delegata (którą wywołuję w viewWillDissapear):
-(void)pushedVCWillClose:(PushedVC *)sender { self.title = @"Previous Title"; }
źródło
Jeśli chcesz nie tylko zmienić tekst przycisku Wstecz i zachować oryginalny kształt strzałki w lewo, ale także zrobić coś, gdy użytkownik kliknie przycisk Wstecz, polecam rozejrzeć się po moim „ CustomNavigationController ”.
źródło
// Możesz to osiągnąć, ustawiając tytuł w poprzednim kontrolerze widoku, jak pokazano poniżej
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" }
źródło
Aby zmienić tytuł przycisku Wstecz, zapoznaj się z poniższym kodem
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`
źródło
W Swift5 nie można edytować backBarButtom. Dlatego musimy najpierw ukryć backBarButtom, a następnie użyć dostosowanego leftbarButtom, aby zastąpić backBarButtom. Oto szczegółowe rozwiązanie: https://stackoverflow.com/a/63868300/13939003
źródło
To zadziałało dla mnie:
self.navigationController.navigationBar.topItem.title = "Back"
źródło