0

私はこの問題を調査するのにかなりの時間を費やしましたが、SOを精査しても理解できません。基本的に、関連する UIViewController を持ついくつかのタブを持つ TabBarController (TBC) があります。私のアプリには、TBC の一部ではない他の UIViewControllersもあります。これらの非TBC UIViewControllersの1つにボタンがあり、クリックするとTBCだけでなく、0ではない特定のタブインデックスにも移動する必要があります。

多くの人が「ああ、self.tabBarControllerを参照してください...何とか何とか何とか」と言っているのを見つけましたが、TBC以外のUIViewControllerの1つにいると、selfが機能しません。

うまくいくかもしれないと思ったが、うまくいかなかった以下を見つけました。このコードは、必要な TBC への参照を取得し、その表示を見越してゼロ以外のインデックスを割り当て、セグエを実行します。残念ながら、セグエに続く最初のタブしか表示されません。

// doesn't work...    
UITabBarController *TBC = [self.storyboard instantiateViewControllerWithIdentifier:@"TBC"];
TBC.selectedIndex = 1;
[self performSegueWithIdentifier:@"goTBC" sender:nil];

どんな助けでも大歓迎です!

4

1 に答える 1

0

AppDelegate に int 変数を作成して、デフォルトで 0 に表示するタブ インデックスを追跡することで、この問題を解決しました。次に、TabBarController の viewWillAppear メソッドで、selectedIndex を AppDelegate に保存したタブ インデックスに設定しました。これは、最もクリーンであるとは思わない方法ではありますが、問題を処理します。

- (void)viewWillAppear:(BOOL)animated
{
     // Assume ad is your app delegate...
     // Assume navToIndex is the int I referenced above in app delegate
     self.selectedIndex = ad.navToIndex;
}
于 2013-02-20T00:56:26.580 に答える