2012-12-20 93 views
5

打開該應用,在一個特定的標籤我有5個選項卡的的TabBar(常規標籤欄沒有自定義類)的應用程序。當我啓動應用程序時,左邊的標籤打開。我希望它首先打開中間的一個。我試圖把中的TabBar

[self.tabBarController setSelectedIndex:3]; 

在第一次打開視圖控制器的viewDidLoad中,但標籤未切換。 我可以看到它突出顯示但未被選中。如果我把上面的代碼viewWillAppear下,它會在第一次運行時進行選擇,但我會從時間選擇左側的選項卡時,它將跳到中間的一個。

也試過這個沒有成功:

DetailsViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"]; 
[self.navigationController pushViewController:vc animated:true];  

我到底做錯了什麼?

+1

TabBar是從Interface Builder還是使用代碼添加的? –

+0

接口。並拖動觸發segaues到viewcontrollers – Segev

+0

也許[下一個環節(http://stackoverflow.com/questions/4195316/iphone-how-i-hide-a-tab-bar-button)幫助你,如果我理解正確。 – Neznajka

回答

8

這僅僅是爲我工作的解決方案。在屏幕上:

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

有必要調用

tabBarController.selectedIndex = desiredIndex; 

內applicationDidLaunch。

+0

這對我不起作用。 – Segev

0

嘗試在應用程序中設置其中:didFinishLaunchingWithOptions:如果你的TabBar控制器就像是

`[self.window.rootViewController.tabBarController setSelectedIndex:3];` 
+0

在我的'appdelegate'中?這沒有工作 – Segev

0

在故事板上設置自定義類的tabbarController並在自定義類

-(void) viewDidLoad 
{ 
    [self.tabBarController setSelectedIndex:3]; 
} 
0

我做了什麼RootViewController的黑客過去。我曾經爲了找到每個標籤變得活躍,在我的applicationDidFinishLaunching,我需要遍歷所有我的視圖控制器,然後訪問「視圖」特性:

for(viewController in arrayOfViewController) 
{ 
    // will load the view controller into memory 
    [viewController view]; 
} 

不知道,如果你可以做任何用途的。

+0

邪惡+我不明白爲什麼這應該幫助... –