5

5つのタブがあるTabBar(カスタムクラスのない通常のタブバー)を備えたアプリがあります。アプリを起動すると、左側のタブが開きます。真ん中のものを先に開けて欲しいです。入れてみました

[self.tabBarController setSelectedIndex:3];

最初に開いたViewControllerのViewDidLoadで、タブが切り替わっていません。 強調表示されていますが、選択されていないことがわかります。上記のコードを下に置くと、viewWillAppear最初の実行時に選択されますが、時々左側のタブを選択すると、中央のタブにジャンプします。

また、成功せずにこれを試しました:

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

私は何を間違っていますか?

4

5 に答える 5

10

これは私のために働いた唯一の解決策です。appdelegateで:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
[tabBar setSelectedIndex:2];
于 2012-12-28T00:48:17.057 に答える
1

ストーリーボードでカスタムクラスをtabbarControllerに設定し、そのカスタムクラスで

-(void) viewDidLoad
{
    [self.tabBarController setSelectedIndex:3];
}
于 2012-12-20T09:30:10.103 に答える
0

電話する必要があります

tabBarController.selectedIndex = desiredIndex;

applicationDidLaunch内。

于 2012-12-20T08:39:08.090 に答える
0

application:didFinishLaunchingWithOptionsで設定してみてください:タブバーコントローラーがrootViewControllerのような場合

`[self.window.rootViewController.tabBarController setSelectedIndex:3];`
于 2012-12-20T08:40:50.140 に答える
0

私は過去に何かハックなことをしたことがあります。各タブをアクティブにするには、applicationDidFinishLaunchingで、すべてのView Controllerをループして、「view」プロパティにアクセスする必要があることがわかりました。

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

あなたがそれを利用できるかどうかわからない。

于 2012-12-21T08:23:43.717 に答える