Ustawiam tytuł moich kontrolerów widoku w następujący sposób:
self.title = @"my title";
przedtem ustawiłem tytuł w scenorysie dla kontrolera widoku i kontrolera nawigacji, w którym jest osadzony. Ustawiłem go na: "Tytuł";
Kiedy kliknę kartę, która zawiera kontroler widoku, tytuł elementu paska kart i uiviewcontroller
zmieniam się na: mój tytuł
Chciałbym, aby kontroler widoku się zmienił, ale element paska kart pozostał z tytułem: Tytuł
Jak mogę to osiągnąć?
Więc dla tych, którzy nadal tego nie rozumieją (jak ja)
self.navigationItem.title = @"my title";
ustawia tytuł paska nawigacji .self.tabBarItem.title = @"my title";
ustawia tytuł paska zakładek .self.title = @"my title";
ustawia oba te elementy .źródło
Szybki
Ustaw tytuł górnego paska
Ustaw tytuł elementu karty
Ustaw oba tytuły
źródło
topItem
?Dla szybkiego użyj tego,
źródło
Uwaga: Jeśli masz kontroler paska kart z kontrolerami nawigacji w katalogu głównym każdego kontrolera widoku, ustawienie elementu paska kart na kontrolerach widoku nie wpłynie na tytuł, jeśli ustawisz
navigationItem.title
. Zamiast tego musisz ustawićtabBarItem
na kontroler nawigacyjny, aby można go było pobrać z kontrolera paska kart.Żadna z odpowiedzi opublikowanych przez innych nie zadziałała dla mnie, ponieważ wszystkie kontrolery widoku mojego paska kart mają kontrolery nawigacji w swoim katalogu głównym - jest to typowy wzorzec hierarchii dla
UITabBarController
. MusisztabBarItem
zamiast tego ustawić kontroler nawigacji, aby tytuł wyświetlał się inaczej niżnavigationItem
tytułMożesz tworzyć własne
tabBarItem
i bezpośrednio przypisywać je do swojego VC.Wtedy będziesz miał coś takiego:
Ale należy to zmienić na następujące, aby pobrać już skojarzony
tabBarItem
z kontrolera widoku i ustawić go automatycznie na kontrolerze nawigacyjnym.Będziesz mógł teraz mieć inny tytuł (zestaw z Twojego VC) niezależnie od tytułu zdefiniowanego dla Twojego
tabBarItem
.źródło
Dość późno na to. Możesz mieć TabBarController służyć jako UITabBarControllerDelegate i UINavigationControllerDelegate dla siebie i kontrolerów nawigacji osadzonych odpowiednio w każdej z twoich kart.
.h:
.m:
Opierając się na szybkich testach, wydaje się, że te dwie akcje delegatów powinny obejmować wszelkie luźne przypadki i aktualizować tytuł niezależnie od tego, czy przełączasz karty, czy przeglądasz w kontrolerze nawigacyjnym. Aby uzyskać kompletność, możesz również zaktualizować swój tytuł w didShowViewController , ale na podstawie tego, co widziałem, nie sądzę, aby było to konieczne.
źródło
Prawdopodobnie trochę późno (ale).
Ustawienie tytułu VC zmienia tytuł nawigacji ORAZ pasek tabulacji. (jeśli VC jest już dołączony do obu).
Jeśli chcesz mieć osobne tytuły, musisz je ustawić ręcznie, zwykle ustawiasz tytuł dla VC, a konkretnie tytuł tabBarItem, ponieważ jest to właściwość
źródło
Swift 4.2
Proszę bardzo, stworzyłem rozszerzenie dla UIViewController:
A następnie z kontrolera:
źródło