2013-07-29 13 views
19

Jak mogę przełączyć się na zakładkę w UITabBarController przy użyciu StoryBoard? Próbowałem kodu poniżej, ale bez powodzenia (karta nie jest zaznaczone):Jak ustawić wybraną zakładkę w UITabBarController przy użyciu StoryBoard?

self.tabBar.selectedIndex = 3; 

Szczerze używane pliki nib bez storyboard i powyżej kod pracował dobrze w

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions 
      :(NSDictionary *)launchOptions 

ale teraz mogę” t ustaw tabulator programowo. Może jest inny problem, który nie jest związany z wyborem karty. Jak mogę przełączyć karty?

+1

Kiedy mówisz „bez sukcesu”, co dokładnie masz na myśli? Błąd kompilatora? Czy karta nie jest wybrana? – Stavash

+0

o, dzięki to bardzo ważny komentarz. Tak, zakładka nie zostanie wybrana. –

+0

Co powiecie na setSelected ... Tak jak ten [self.tabBar setSelectedIndex: 3]; – Yanchi

Odpowiedz

27

Chwyć wystąpienie UITabBarController następnie ustawić właściwość selectedViewController:

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want 
16

Alexander, myślę, że problem jest coraz poprawną instancję pasku kart. Jeśli pasek karta jest kontroler widoku głównego, możesz zrobić to w ten sposób w swoim appdelegate Jeśli metoda didFinishLoading:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
    [tabBar setSelectedIndex:3]; 

Spróbuj i powiedz mi wynik proszę.

+3

* Komentarz Swift - 18 miesięcy później, jeśli przekształcisz to w Swift w swojej aplikacjiDelegate, jak pokazano powyżej, uzyskasz oczekiwany wynik. Tłumaczenie Swift to: 'let tabBar: UITabBarController = self.window? .rootViewController as! UITabBarController' –

4

Będzie to działać w stroryboard też ...

[self.tabBarController setSelectedIndex:3]; z tego dodatku UITabBarControllerDelegate w .h

a następnie użyć tej metody delegate

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController 
{ 
    return (theTabBarController.selectedViewController != viewController); 
} 
2

można osiągnąć tylko w tym również za pomocą storyboardy. Ctrl-przeciągnij z tabBarController do ViewController (s) i wybierz "Segment relacji, Zobacz kontrolerów". Pierwszy wybrany ViewController będzie domyślnym/początkowym ViewControllerem.

8

* Komentarz Swift - 18 miesięcy później, jeśli przekształcisz rozwiązanie Yanchi w Swift w swojej aplikacjiDelegate, uzyskasz oczekiwany wynik. Przekład Swift jest:

let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController 

tabBar.selectedIndex = 1 
+4

Dziękuję Space Monkey. Niech twój statek wyląduje bezpiecznie. –

+0

Dzięki uratowałem mój dzień. –

0

Można także ustawić kartę domyślną "User Defined Runtime Attributes" korzystając storyboard.

Wybierz Tab Bar Controller z serii ujęć, w prawym okienku wybierz Identity Inspector i dodać atrybut:

 
Key Path : selectedIndex 
Type  : Number 
Value : 2 (whatever number you want)