Wierzę, że następujące powinny pomóc:
self.navigationController.navigationItem.backBarButtonItem.enabled = NO;
UPDATE
Sorry chłopaki, moja wiara nie ziściło.
Wygląda na to, że właściwość backBarButtonItem
została zaprojektowana wyłącznie do ustawiania niestandardowego tytułu lub obrazu przycisku Wstecz.
Z dokumentacji:
Jeśli chcesz określić własny obraz lub tytuł dla pleców przycisku, można przypisać element niestandardowy przycisk bar (z tytułu niestandardowego lub obrazu) do tej nieruchomości zamiast . Podczas konfigurowania elementu przycisku paska element, nie przypisuj do niego widoku niestandardowego; element nawigacyjny ignoruje niestandardowe widoki w przycisku Wstecz paska mimo to.
Domyślna wartość tej właściwości to zero.
Niestety nie znaleźliśmy żadnego sposobu wyłączanie przycisku z powrotem oszczędność natywną wygląd i zachowanie, ponieważ za każdym razem, gdy próbuję ustawić niestandardowy UIBarButtonItem
do navigationItem.backBarButtonItem
nieruchomości - jest ona aktualizowana z odpowiednim natywnym Wstecz stylu zawsze ma enabled == YES
.
Sądzę, że robi to Apple z jakiegoś powodu, ponieważ zasadniczo nie powinniśmy zmuszać użytkownika do pozostawania na ekranie szczegółów i uniemożliwić mu powrót. Ponadto, w iOS7 i późniejszym użytkowniku zawsze można użyć gestu przesunięcia z lewej strony (jeśli go nie wyłącza), aby powrócić.
Jedyną brzydką rzeczą, którą mogę polecić, jest stworzenie niestandardowego UIBarButtonItem
i ustawienie go na leftBarButtonItem
z tytułem, celem i selektorem "Powrót", który spowoduje wyświetlenie kontrolki viewController. Domyślnie zastąpi natywny przycisk powrotu. Następnie możesz wyłączyć to tak jak zwykle, używając navigationItem.leftBarButtonItem.enabled = NO
.
Niestety to nie będzie wyglądać i działać (w przypadku tytułu aktualizacji w zależności od dostępnego miejsca) jako ojczystego tylnym przycisku :(
To nie działa. Próbowałem wywoływać twój kod w viewDidLoad i viewDidAppear iw obu przypadkach nie wydaje się, żeby to miało jakikolwiek wpływ. –
@ user3636891 Zgadzam się, że ten kod nie działa również dla mnie –
Nie działa również dla mnie. – Jeswin