私のtabBarControllerベースのアプリケーションでは、tabA、tabB、tabCおよびtabDの4つのタブがあります。ユーザーはタブ間をジャンプできます。私の質問に今viewControllerを使用したTabBatController
:
- タバ、TABBとtabDは単一viewControllers
を持って - VC1、VC2とVC3
私はアプリがどのViewControllerを覚えている問題に実行しています - TABCはしかし3 viewControllersを持っていますユーザーが最後にあった、そしてユーザーがTABCをタップすると、コントロールは、ユーザーがにあった最後のビューコントローラに行くたとえば、のは、次の順序であるとしましょう:。のビューコントローラ:
- ユーザータバをタップtabAが表示されます
- ユーザータップtabD:tabDのビューコントローラーが表示されます
- ユーザータップtabC:ビューコントローラーvc1が表示されます。 - 代わりに私がVC1に
はこれまでのところ、私はTABCのVC1に以下を試してみましたが、コントロールはまったくVC1に来ていません:
- (void) viewWillAppear:(BOOL)animated {
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}
は、どのように私はいつもVC1をロードするためにTABCを伝えることができますか?
よろしくお願いいたします。
Sam。
お返事ありがとうございます。私は幸運を持っていません/提案。 AppDelegateをTabBarControllerDelegateにしました。コールバック関数が呼び出されますが、次のコードを使用して、popToRootViewControllerを呼び出すことはできません。if([viewController.tabBarItem.title isEqualToString:@ "vc1"]){ \t \t NSArray * tmp = [self.tabBarController。ナビゲーションコントローラーviewController]; [self.tabBarController.navigationController popToRootViewController:YES]; } tmp配列にはviewControllerがゼロです。 – Sam
tab3のナビゲーションコントローラを使用していますか?もしそうなら、あなたのコードは 'tabBarController'のnavagationControllerを取得しています。これは必要なものではありません。つまり、tabBarController.navigationControllerはビュー階層のtabBarControllerの上にあります。 '[self.tabBarController.navigationController popToRootViewController:YES];' – dvorak
の代わりに '[viewController.navigationController popToRootViewController:YES];を試してください。痛みを残して申し訳ありませんが、私はまだ挫折しています。 popToRootViewControllerは私のためのトリックをしていないようです。私が疑問に思っていることは、tabCはナビゲーションコントローラです。それは、使用している3つのVC(つまりvc1、vc2、vc3)を知っています。 AppDelegateはTabBarControllerDelegateなので、どのようにそれについて知りますか? – Sam