Jak ukryć przycisk „Wstecz” na pasku nawigacji w telefonie iPhone?

315

Dodałem kontrolę nawigacji, aby przełączać się między widokami w mojej aplikacji. Ale niektóre widoki nie powinny mieć przycisku „Wstecz” (poprzedni tytuł). Wszelkie pomysły dotyczące ukrywania przycisku Wstecz?

Chilly Zhong
źródło

Odpowiedzi:

811

Cel C:
self.navigationItem.hidesBackButton = YES;

Szybki:
navigationItem.hidesBackButton = true

user8170
źródło
@ user8170 jak ukryć lewy przycisk paska na pasku nawigacji ..?
rockey
9
nie możesz ukryć backbutton przez self.navigationItem.leftBarButtonItem = nil;. Jeśli wyraźnie ustawiłeś lewy pasek przycisków, możesz użyć self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;ukryje Przycisk Wstecz Przedmiot
rakeshNS
1
W iOS 7 self.navigationItem.leftBarButtonItem = zero; nie wpływa na przycisk Wstecz, gdy jest wydawany z viewDidLoad, viewWillAppear lub viewDidAppear. Ten wiersz kodu działa w ramach viewdidLoad: self.navigationItem.hidesBackButton = YES;
Alex Zavatone
2
Nie jestem pewien, czy to pomaga, ale „jaźń” jest zawsze kontrolerem widoku, który jest prezentowany na górze stosu kontrolera nawigacji.
Kunal Balani
self.navigationItem.hidesBackButton = TAK; działa dla mnie w widokuDidLoad, ios 7
leukosaima
38

Najlepszym sposobem jest połączenie ich, aby ukrył przycisk Wstecz, nawet jeśli skonfigurujesz go ręcznie:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
Skrew
źródło
6
Aby odpowiedzieć użytkownikowi 716216, wyjaśnił to w wyjaśnieniu dotyczącym jednego zdania. Drugi wiersz kodu działa w przypadku domyślnym. Pierwszy wiersz kodu działa, jeśli sam utworzyłeś i dodałeś przycisk.
Alex Zavatone
21

ukryj przycisk Wstecz z poniższym kodem ...

[self.navigationItem setHidesBackButton:YES animated:YES];

lub

[self.navigationItem setHidesBackButton:YES];

Również jeśli masz niestandardowy, UINavigationBarspróbuj kodu poniżej

self.navigationItem.leftBarButtonItem = nil;
Paras Joshi
źródło
w każdej klasie, gdy użyjesz tego kodu, a następnie przycisk Wstecz
paska
6

W Swift :

Dodaj to do kontrolera

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}
King-Wizard
źródło
3

W funkcji viewDidLoad sterownika UIViewController użyj kodu:

self.navigationItem.hidesBackButton = YES;
niezależny
źródło
2

Nie zapominaj, że musisz wywołać go na obiekcie, który ma kontroler nawigacyjny. Na przykład, jeśli kontroler nawigacyjny naciska na kontroler paska kart za pomocą RootViewController, wywołanie self.navigationItem.hidesBackButton = YESRootViewController nic nie zrobi. Będziesz musiał zadzwonićself.tabBarController.navigationItem.hidesBackButton = YES

Tyler
źródło
2

Nie zapominaj, że mamy teraz gest przesunięcia do tyłu. Prawdopodobnie chcesz to również usunąć. Nie zapomnij włączyć go ponownie, jeśli to konieczne.

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Bruno Delgado
źródło
1

Dodaj ten kod do kontrolera widoku

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Bhavsar1311
źródło
1

Dla mnie żadne z powyższych nie działało, nie miało żadnego efektu wizualnego. Używam scenariuszy z widokiem „osadzonym” w kontrolerze nawigacyjnym.

Następnie na poziomie kodu dodaję moje menuItems iz jakiegoś powodu „backButton” jest widoczny podczas wizualnego debugowania hierarchii widoków, a moja ikona menuItem jest wyświetlana pod niewidocznym „przyciskiem wstecz”.

Próbowałem ustawień, jak zasugerowano przy różnych metodach zaczepiania i to nie miało żadnego efektu. Potem spróbowałem bardziej brutalnego podejścia i powtórzyłem subview, który również nie przyniósł efektu.

Sprawdziłem rozmiary moich ikon i wyglądałem dobrze. Po zapoznaniu się z wytycznymi Apple Human Interface Guideline potwierdziłem, że moje ikony są prawidłowe. (1 piksel mniejszy w moim przypadku 24px 48px 72px).

Najdziwniejsza część to faktyczna poprawka ...

Dodając element BarButton, nadaj mu tytuł z co najmniej jednym znakiem , w moim przypadku spacją.

Mam nadzieję, że to komuś pomoże.

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];
Wayne
źródło
1

Nie działało dla mnie we wszystkich przypadkach, kiedy ustawiałem

self.navigationItem.hidesBackButton = TAK;

w viewWillAppear lub ViewDidLoad, ale działał idealnie, gdy ustawiłem go w init viewController.

Joe M.
źródło
0

Spróbuj tego - self.navigationController?.navigationItem.hidesBackButton = true

Ahil Rahesh
źródło
0

W języku c # lub Xamarin.ios this.NavigationItem.HidesBackButton = true;

Anisetti Nagendra
źródło
0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

jeśli użyjesz tego bloku kodu w didLoad lub loadView działało, ale nie działało idealnie. Jeśli przyjrzysz się uważnie, zobaczysz, że przycisk Wstecz ukrywa się, gdy twój widok się załaduje.

Jakie jest idealne rozwiązanie?

Dodaj składnik BarButtonItem z componentView (Command + Shift + L) do paska docelowego viewControllers.

Wybierz BarButtonItem set Title = "" z prawego panelu

wprowadź opis zdjęcia tutaj

Ahmet Yilmaz
źródło