2012-05-03 15 views
9

Masz problemy ze zmianą początkowego wyboru paska kart w aplikacji (np. Środkowa karta jest wybierana podczas uruchamiania aplikacji, a nie po lewej stronie karty). Aplikacja używa storyboardów, a kontroler paska kart został dodany później w fazie rozwoju za pomocą metody storyboard.Programowo programuje zmianę początkowego paska zakładek.

tabBarController.selectedIndex = 1; 

powyższy kod nie działa (bo nie mam kontroler niestandardowy widok podłączony do mojego paska kart, tylko domyślny UITabBarController):

Sporządzono niektóre googling i spojrzał na wielu różnych zasobów i nie znalazłem rozwiązania dla aplikacji, która nie została początkowo utworzona przy użyciu szablonu Tab paska aplikacji Apple.

+0

Czy ta początkowa kontroler widok na projekt czy też popychany z innego kontrolera widoku? – lnafziger

+0

Kontroler paska kart jest początkowym kontrolerem widoku. – LazerLex

Odpowiedz

28

Ponieważ jest to początkowy kontroler widoku, a nie jest podklasą, trzeba ustawić to w appDelegate.

W AppDelegate.m, dodać następujące metodę application:didFinishLaunchingWithOptions::

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Select the left-most tab of our initial tab bar controller: 
    UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
    tabBar.selectedIndex = 0; 
    return YES; 
} 
+2

Jesteś świetny. Działa doskonale. Ma sens, będę musiał to zrobić w AppDelegate, ponieważ jest to początkowy kontroler widoku. Dzięki. – LazerLex

+1

W celu odniesienia w przyszłości, w sytuacji, gdy trzeba zrobić coś podobnego i nie jest to początkowy kontroler widoku, należy przeładować 'prepareForSegue' w widoku, który jest przed załadowaniem i ustawić go z tego miejsca. – lnafziger

1

tabBar setSelectedItem: Spróbuj użyć tego w viewDidLoad

+0

która nie działa, ponieważ nie mam określonego kontrolera widoku dla paska kart (z metodą viewDidLoad). Nie mam utworzonego gniazdka dla paska kart. To tylko domyślny stworzony w Storyboards. – LazerLex

+0

Dodałem widok kontroler.h i .m i połączyłem go z moim TabBarController. Stworzyłem wylot UITabBarController i użyłem wybranego indeksu. a następnie wypróbowałeś to, co powiedziałeś (tworząc gniazdo UITabBar i używając setSelectedItem) i wciąż nic:/ – LazerLex