web-dev-qa-db-ja.com

StoryBoardを使用してUITabBarControllerで選択したタブを設定するにはどうすればよいですか?

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

self.tabBar.selectedIndex = 3;

正直に私はStoryBoardなしでnibファイルを使用し、上記のコードは

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

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

24

UITabBarControllerのインスタンスを取得して、selectedViewControllerプロパティを設定します。

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
35
Tommy Devoy

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

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

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

18
Yanchi

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

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

tabBar.selectedIndex = 1
11
Phil Andrews

これはストリーボードでも動作します...

[self.tabBarController setSelectedIndex:3];これを追加するとUITabBarControllerDelegate in .h

次に、このdelegateメソッドを使用します

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
    return (theTabBarController.selectedViewController != viewController);
}
4
iosLearner

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

2
Wubbe

LSwiftでIBInspectedを使用しています:

extension UITabBarController {
    @IBInspectable var selected_index: Int {
        get {
            return selectedIndex
        }
        set(index) {
            selectedIndex = index
        }
    }
}
2
superarts.org

Swift 4.1

TabBarViewControllerクラスで、このキー行を追加できます

self.selectedIndex = 0
1
Ketan Sodvadiya