2015-03-26 4 views
13

Ich habe eine Ansicht von UIViewControler abgeleitet (nicht UITabBarController). In dieser Ansicht habe ich eine Tab-Leiste mit mehreren Tab-Elementen hinzugefügt. Ich habe das UITabBarDelegate verwendet, damit die Ansicht etwas tun kann, wenn Benutzer auf jedes Registerkartenelement tippen.Wählen Sie ein Tab-Leiste-Element programmgesteuert (nicht mit UITabBarController)

Meine Frage ist, wie wir das erste Registerkartenelement beim ersten Laden der Ansicht programmieren können? Beachten Sie, dass der erste Tab-Eintrag auch im Status "aktiv" sein soll.

Noch einmal, ich bin nicht UITabBarController

Dank

Antwort

27
[tabBar setSelectedItem: [tabBar.items objectAtIndex:0]]; 

, die in schnellen verwenden, ich denke, wäre:

tabBar.selectedItem = tabBar.items![0] as UITabBarItem 
+1

Dank Foster. Ich muss diesen Code tatsächlich schreiben: 'tabBar.selectedItem = tabBar.items! [0] als UITabBarItem' Allerdings würde ich das" tap "-Ereignis auf der ersten Registerkarte simulieren möchten. Ist das möglich? – tala9999

+0

Ich bin mir nicht sicher, was du meinst. Wollen Sie sagen, dass die Delegate-Methode tabBar (_: didSelectItem :) nicht aufgerufen wird, wenn Sie tabBar.selectedItem = tabBar.items! [0] als UITabBarItem? –

+0

Ja. Das ist es was ich meinte. Dieser Code setzt nur die Registerkarte als "aktiv" und feuert nicht "tabBar" (_: didSelectItem:) ' – tala9999

2

In swift wenn Tabbar nicht TabBarController Set standardmäßig verwendet wird Wählen

var tabbar:UITabBar?//if declare like this 

tabbar!.selectedItem = self.tabbar!.items![0] as? UITabBarItem 

oder

let tabbar = UITabBar()//if declare and initilize like this 

tabbar.selectedItem = self.tabbar.items![0] as? UITabBarItem 
0

Bevor wählen aktiven Tab-Leiste Element auf viewDidLoad Ereignis

[self.tabBar setSelectedItem: [self.tabBar.items objectAtIndex: 0]];

1

Swift 3:

tabBarController.selectedIndex = 0 // (or any other existing index) 
Verwandte Themen