Chciałem usunąć tekst z przycisku „Wstecz” przycisku a UIBarButtonItem
, pozostawiając tylko niebieski szewron na pasku nawigacyjnym. Pamiętaj, że rozwijam się na iOS 7. Wypróbowałem kilka metod, w tym między innymi:
To metoda obrazu, która mi się nie podobała (obraz wyglądał nie na miejscu):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Inną metodą, którą wypróbowałem, była ta, która po prostu nie działała (nic nie było wyświetlane):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
To, co chciałem osiągnąć, to coś w rodzaju przycisków wstecz znajdujących się w aplikacji Muzyka na iOS 7, która zawierała tylko jeden szewron.
Dzięki.
ios
uinavigationbar
uibarbuttonitem
uinavigationitem
Pan Ziyue
źródło
źródło
Odpowiedzi:
Następnie możesz usunąć tytuł elementu przycisku Wstecz.
Jeśli używasz Storyboard, możesz ustawić przycisk Wstecz inspektora atrybutów nawigacyjnych ze spacją.
źródło
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
Aby ustawić tytuł przycisku Wstecz dla kontrolera widoku bez zmiany jego tytułu, użyj:
Cel C:
Szybki:
Aby to wyjaśnić, odbywa się to na kontrolerze widoku, który zobaczysz po naciśnięciu przycisku Wstecz. tzn. zamiast widzieć „<Ustawienia”, chcesz po prostu zobaczyć „<”, a następnie na SettingsViewController umieściłbyś to w swoim
init
. Wtedy nie pojawia się żaden problem z tytułem, który nie pokazuje się, gdy patrzysz na sam kontroler widoku.źródło
Jeśli używasz Storyboardów, możesz przejść do
Attributes Inspector
ViewControlleraNavigation Item
(kliknijNavigation Bar
) i ustawićBack Button
właściwość na „” (jeden znak spacji). Spowoduje to ustawienie tytułu przycisku Wstecz na jedną spację, pozostawiając widoczny szewron. Nie musisz zadzierać z kodem.Zauważ, że ustawi to
Back Button
tytuł przycisku Wstecz, który będzie segregował do tego kontrolera widoku od tego, który został na niego wciśnięty, a nie do tego,Back Button
który będzie wyświetlany w tym kontrolerze!źródło
To działa dla mnie, aby wyświetlić tylko „tylny” szewron bez żadnego tekstu:
Ustaw tę właściwość w
viewDidLoad
kontrolerze widoku przedstawiającym pasek nawigacyjny, a on załatwi sprawę.Uwaga: przetestowałem go tylko w systemie iOS 7, co jest objęte zakresem pytania.
źródło
-viewDidLoad
VC, że nie chcę tekstu Wstecz. Jednak później dowiedziałem się, że kiedy wybieram 2. VC znavigationController
tytułu, tekst pojawia się wkrótce potem, nie natychmiast. Myślę, że film lepiej to zilustruje, więc oto: linkKiedy ustawiasz tytuł przycisku, użyj @ „” zamiast @ „”.
--EDYTOWAĆ--
Czy coś się zmienia, gdy próbujesz innych ciągów? Z powodzeniem używam następującego kodu:
backString to zmienna, która jest ustawiona na @ ”lub @„ Back ”, w zależności od tego, czy korzystam z iOS 7 lub niższej wersji.
Należy zauważyć, że tego kodu nie ma w kontrolerze strony, dla której chcę dostosować przycisk Wstecz. Tak naprawdę jest w kontrolerze, zanim znajdzie się na stosie nawigacyjnym.
źródło
setLeftBarButtonItem:backButton
zamiast tego wstawił, nic by tam nie było.Czasami pomocne jest widzenie rzeczy w kontekście. Oto minimalny projekt, który ukrywa tekst „wstecz”, ale nadal pokazuje strzałkę.
Storyboard
Istnieje segment pokazu od przycisku „Pokaż drugi kontroler widoku” do drugiego kontrolera widoku.
Dodałem również element nawigacyjny do drugiego kontrolera widoku, aby miał tytuł. To jest opcjonalne. Nie wpływa na przycisk Wstecz.
Kod
FirstViewController.swift
SecondViewController.swift
Metoda alternatywna (tylko IB, bez kodu)
W serii ujęć wybierz element nawigacyjny dla pierwszego kontrolera widoku (nie drugiego). Po prostu wprowadź spację dla tekstu przycisku Wstecz.
źródło
źródło
Na iOS7 Apple wprowadził dwie nowe właściwości do UINavigationBar, „backIndicatorTransitionMaskImage” i „backIndicatorImage”.
Po prostu dzwoniąc raz:
Będzie renderował niestandardowy obraz zamiast domyślnego glifu szewronowego, dziedzicząc kolor odcienia keyWindow.
A do usunięcia tytułu zasugeruję odpowiedź Kamarosa. Pamiętaj, aby wywołać ten kod na kontrolerze widoku, który wypycha nowy kontroler widoku. Usuwanie tekstu tytułowego iOS UIBarButtonItem
źródło
Podane odpowiedzi nie odniosły wielkiego sukcesu, ale znalazłem naprawdę prostą pracę. W swojej serii ujęć możesz kliknąć element nawigacyjny UIViewController i ustawić tekst przycisku Wstecz. Ustawiłem go w pojedynczej przestrzeni i dało mi to zachowanie, którego szukałem.
źródło
To działało dla mnie w iOS10. Wywołaj to z viewDidLoad kontrolera widoku.
źródło
Prostym rozwiązaniem tego problemu, działającego zarówno na iOS7, jak i 6, jest ustawienie niestandardowego widoku tytułu w viewDidLoad:
Następnie, w widoku WillAppear: możesz bezpiecznie zadzwonić
Ponieważ widok tytułu jest widokiem niestandardowym, nie zostanie nadpisany podczas powrotu do stosu nawigacji.
źródło
[self.navigationItem.backBarButtonItem setTitle:@" "];
w viewWillAppear ale to nie działa na poglądów prezentowanych po odwoływanie modalne widoku.Właściwie możesz to zrobić za pomocą jednej sztuczki:
Zastąp
UINavigationBar
klasę i dodaj następujący wiersz kodu:Następnie zainicjuj swoją
UINavigationController
niestandardową klasą UINavigationBar .. itd.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Mam nadzieję że to pomoże
źródło
Byłem w stanie ułożyć coś razem, korzystając z odpowiedzi DonnaLea. Oto jak rozwiązanie pojawia się w mojej podklasie UIViewController:
Problem z oryginalną odpowiedzią polega na tym, że usuwa tytuł z kontrolera, gdy wrócisz do niego. Próba zresetowania tytułu w widoku WillDisappear jest zbyt późna w procesie przejścia; Powoduje, że tytuł przyciąga z powrotem zamiast ładnie animować. Jednak willMoveToParentViewController dzieje się wcześniej i pozwala na prawidłowe zachowanie.
Zastrzeżenie: Testowałem to tylko z normalnym push / pop UINavigationController. W innych sytuacjach mogą wystąpić dodatkowe nieoczekiwane zachowania.
źródło
W metodzie preparForSegue: pierwszego ViewControllera ustawiłeś tytuł tego widoku na @ "", więc po naciśnięciu następnego widoku wyświetli poprzedni tytuł ViewController, który będzie @ "".
Jedynym problemem jest to, że po naciśnięciu przycisku Wstecz twój poprzedni widok nie będzie miał tytułu, więc możesz dodać go ponownie w viewWillAppear:
Nie podoba mi się to rozwiązanie, ale działa i nie znalazłem innego sposobu.
źródło
SWIFT 3
źródło
Brak odpowiedzi pomógł mi. Ale sztuczka zrobiła - właśnie wyczyściłem tytuł kontrolera widoku, który naciskał (tam, gdzie zmierza przycisk Wstecz) tuż przed jego wciśnięciem.
Więc jeśli poprzedni widok nie ma tytułu, w systemie iOS 7 przycisk Wstecz będzie miał tylko strzałkę, bez tekstu.
W
viewWillAppear
widoku pchającym przywróciłem oryginalny tytuł.źródło
Miałem ten sam problem i zrobiłem to w ten sposób.
--EDYTOWAĆ--
jest to rozwiązanie, gdy naprawdę chcesz usunąć tekst tytułu całego UIBarbuttonItem. Jeśli chcesz tylko usunąć tytuł pozycji przycisku paska wstecz, nie ma jednego prostego wygodnego rozwiązania. W moim przypadku, ponieważ mam tylko kilka UIBarButtonItems, które muszą wyświetlać tekst tytułu, właśnie zmieniłem tytułTextAttributes tych przycisków. Jeśli chcesz być bardziej szczegółowy, użyj poniższego kodu, który zmieni tylko przyciski paska nawigacji:
źródło
UIControlStateHighlighted
, jak równieżTo użycie podklasy
navigationController
usuwa „Wstecz”.Używam tego, aby go usunąć na stałe za pośrednictwem aplikacji.
źródło
źródło
Ukryj przycisk Wstecz Tytuł paska nawigacji
źródło
Oto co robię, czyli łatwiej jest usunąć tytuł przycisku Wstecz
źródło
Swift 3.1 Możesz to zrobić, wdrażając metodę delegowania UINavigationController. Ukryje tylko tytuł z przyciskiem Wstecz, nadal otrzymamy obraz strzałki wstecz i domyślną funkcjonalność.
źródło
Możesz także użyć tego:
To działa dla mnie
źródło
źródło
Idealne rozwiązanie na całym świecie
źródło
Tworzę niestandardową klasę
UINavigationController
i stosuję ją do wszystkich kontrolerów nawigacyjnych w mojej aplikacji. W tej niestandardowejUINavigationController
klasie ustawiamUINavigationBar
delegata naself
ładowanie widoku.Następnie wdrażam metodę delegowania:
W ten sposób po prostu przypisuję swoją klasę niestandardową do wszystkich kontrolerów nawigacyjnych i usuwa tytuł ze wszystkich przycisków wstecz. I dla jasności, zawsze ustawiam tytuł dla wszystkich moich innych kontrolerów widoku w środku,
viewWillAppear
dzięki czemu tytuł jest zawsze aktualizowany tuż przed pojawieniem się widoku (w przypadku, gdy jest usuwany przez takie sztuczki).źródło
Działa tylko wpisanie pojedynczego miejsca dla elementu nawigacyjnego przycisku Wstecz !!
źródło
Jeśli tak jak ja, używasz niestandardowego widoku zamiast
UINavigationBar
i utkniesz z przyciskiem Wstecz, musisz wykonać trochę pracy, która wydaje się nieco zakłopotana.Wygląda na to, że jeśli nie zostanie zaprezentowany, bez względu na to, co spróbuje pokazać tytuł, oznacza to, że jest pokazywany, a następnie ukryty, zanim zostanie narysowany i rozwiązuje problem.
źródło
źródło
Stworzyłem bardzo prostą kategorię konfiguracji zerowej, aby ukryć wszystkie tytuły przycisku Wstecz w naszej aplikacji, którą możesz sprawdzić tutaj . To pytanie już zaakceptowało odpowiedź, ale dla innych może być pomocne.
EDYTOWAĆ:
plik .h
plik .m
źródło