2012-03-08 11 views
0

の負荷デフォルト状態私はいくつかのアイデアを必要とするか、次の質問への出発点:のiOS:タブバー - タブ

私はTabBarViewで始まるアプリを持っている - いくつかのタブに接続された異なるビュー/ ViewControllersがあります並べ替えで アクティブなタブが変更された場合、このタブで最後にアクティブだったView/ViewControllerではなく、このタブの「開始」ビュー/ ViewControllerをロードする(今)オープンタブが必要です。 どうすればいいですか?

答えて

1

私はあなたがUITabBarDelegateメソッドを使用して見てお勧め:

tabBarController:didSelectViewController:UINavigationController方法と組み合わせる:ユーザーがタブを選択したときに

popToRootViewControllerAnimated:だから、あなたはナビゲーションがルートコントローラから始まることを保証することができます。コメントに反応して

EDIT:

それは理想的な状況ではないのですが、あなたはアプリのデリゲートでUITabBarControllerを参照することができます。例えば:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Get reference to Tab Bar Controller as the root view 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 

    // Set Delegate 
    tabBarController.delegate = self; 

    return YES; 
} 

あなたは、その後に似UITabBarDelegateメソッドを実装できます。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    // Pop to root if the selected controller is a navigation controller. 
    if ([viewController isKindOfClass:[UINavigationController class]]) { 
     [((UINavigationController *)viewController) popToRootViewControllerAnimated:NO]; 
    } 
} 

私もこれをテストしていません!

+0

hm、私はタブバーアプリケーションを起動するので、ViewController.m/ViewController.hをTabBarController用に持っていません...私はTab1ViewControllerとTab2ViewControllerのファイルしか持っていません。 – jacksbox

+0

私はいくつかの追加コードを追加する答えを編集しました。それが役に立てば幸い。 –

+0

OK、私はそれを持っている:私は、TabBarControllerの新しいルートビューコントローラを作成し、それを自分自身を委任させます。これでne RootViewControllerのdidSelectViewControllerメソッドを呼び出すことができます。ご協力いただきありがとうございます! – jacksbox

関連する問題