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


Odpowiedzi:


811

Cel C:
self.navigationItem.hidesBackButton = YES;

Szybki:
navigationItem.hidesBackButton = true


@ 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;

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;

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)
}


3

W funkcji viewDidLoad sterownika UIViewController użyj kodu:

self.navigationItem.hidesBackButton = YES;

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


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;
}

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;

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];

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.


0

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



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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.