24

UITabBarControllerStoryBoard の使用中にタブを切り替えるにはどうすればよいですか? 以下のコードを試しましたが、成功しませんでした (タブが選択されていません):

self.tabBar.selectedIndex = 3;

正直なところ、ストーリーボードなしでnibファイルを使用しましたが、上記のコードは正常に機能しました

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
          :(NSDictionary *)launchOptions

しかし、今はプログラムでタブを設定できません。タブの選択に関連していない別の問題がある可能性があります。タブを切り替えるにはどうすればよいですか?

4

10 に答える 10

18

アレクサンダー、あなたの問題はタブバーの正しいインスタンスを取得していると思います. タブ バーがルート ビュー コントローラーの場合、didFinishLoading メソッドの場合、appdelegate で次のように実行できます。

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

試してみて、結果を教えてください。

于 2013-07-29T13:59:46.930 に答える
12

*Swift コメント - 18 か月後、Yanchi のソリューションを appDelegate で Swift に変換すると、期待どおりの結果が得られます。スウィフトの翻訳は次のとおりです。

let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController

tabBar.selectedIndex = 1
于 2015-05-10T05:20:21.970 に答える
4

これはストーリーボードでも機能します...

[self.tabBarController setSelectedIndex:3];このアドインUITabBarControllerDelegate.h

そして、このdelegate方法を使用します

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
    return (theTabBarController.selectedViewController != viewController);
}
于 2013-08-12T11:46:28.623 に答える
2

これは、ストーリーボードのみを使用しても実現できます。tabBarController から ViewController に Ctrl キーを押しながらドラッグし、[Relationship Segue, View controllers] を選択します。最初に選択した ViewController が、デフォルト/初期の ViewController になります。

于 2014-07-10T15:16:43.643 に答える
-1

ストーリーボードを使用して、 「ユーザー定義のランタイム属性」でデフォルトのタブを設定することもできます。

ストーリーボードからタブ バー コントローラーを選択し、右側のペインで [Identity Inspector] を選択し、属性を追加します。

キーパス: selectedIndex
タイプ : 番号
値: 2 (任意の数値)
于 2016-07-11T06:57:59.757 に答える