StoryBoardを使用してUITabBarController
のタブに切り替えるにはどうすればよいですか?以下のコードを試しましたが、成功しませんでした(タブは選択されていません)。
self.tabBar.selectedIndex = 3;
正直に私はStoryBoardなしでnibファイルを使用し、上記のコードは
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
:(NSDictionary *)launchOptions
しかし、今はプログラムでタブを設定できません。タブの選択に関連しない別の問題がある可能性があります。タブを切り替えるにはどうすればよいですか?
UITabBarController
のインスタンスを取得して、selectedViewController
プロパティを設定します。
yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
アレクサンダー、あなたの問題はあなたのタブバーの正しいインスタンスを取得していると思います。タブバーがルートビューコントローラーである場合、didFinishLoadingメソッドの場合、appdelegateで次のように実行できます。
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:3];
試してみて結果を教えてください。
* Swiftコメント-18か月後、YanchiのソリューションをSwiftに変換すると、期待どおりの結果が得られます。Swift翻訳は次のとおりです:
let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController
tabBar.selectedIndex = 1
これはストリーボードでも動作します...
[self.tabBarController setSelectedIndex:3];
これを追加するとUITabBarControllerDelegate
in .h
次に、このdelegate
メソッドを使用します
- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
return (theTabBarController.selectedViewController != viewController);
}
これは、ストーリーボードのみを使用しても実現できます。 Ctrlキーを押しながらtabBarControllerからViewControllerにドラッグし、「Relationship Segue、View controllers」を選択します。選択した最初のViewControllerがデフォルト/初期のViewControllerになります。
LSwift
でIBInspectedを使用しています:
extension UITabBarController {
@IBInspectable var selected_index: Int {
get {
return selectedIndex
}
set(index) {
selectedIndex = index
}
}
}
Swift 4.1
TabBarViewController
クラスで、このキー行を追加できます
self.selectedIndex = 0