IOSアプリの起動時にビューを別のタブに切り替えるためのコードを記述する必要があります(たとえば、最初のタブではなくデフォルトで2番目のタブが表示されます)。
私はSwiftを初めて使い、次のことを解決しました。
コードは、おそらく最初のタブのViewControllerのfunc viewDidLoad()関数をオーバーライドする必要があります。
次のコードは、2番目のViewControllerを示していますが、下部にタブバーはありません(vcOptionsは2番目のViewControllerタブ項目です:
let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("vcOptions")
self.showViewController(vc as UIViewController, sender: vc)
答えはUITabbarController.selectedIndex = 1を使用することにあると思いますが、これを実装する方法はよくわかりません。
window
rootViewController
がUITabbarController
である場合(ほとんどの場合)、tabbar
ファイルのdidFinishLaunchingWithOptions
にあるAppDelegate
にアクセスできます。
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// Override point for customization after application launch.
if let tabBarController = self.window!.rootViewController as? UITabBarController {
tabBarController.selectedIndex = 1
}
return true
}
これにより、index
にselectedIndex
が指定された(1)のタブが開きます。
viewDidLoad
のfirstViewController
でこれを行う場合、選択したタブを追跡するためのフラグまたは別の方法で管理する必要があります。 didFinishLaunchingWithOptions
ファイルのAppDelegate
またはrootViewController
カスタムクラスviewDidLoad
でこれを行うのに最適な場所です。
1. UITabBarControllerを置き換える新しいクラスを作成します。例えば:
class xxx: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
}
2.次のコードを関数viewDidLoad()に追加します。
self.selectedIndex = 1; //set the tab index you want to show here, start from 0
3.ストーリーボードに移動し、Tab Bar Controllerのカスタムクラスをこの新しいクラスに設定します。 (写真の例としてMyVotes1)
Swift
このコードをtabBarControllerのデフォルトのView Controller(index 0
)に追加できます。
override func viewWillAppear(_ animated: Bool) {
_ = self.tabBarController?.selectedIndex = 1
}
ロード時に、これはタブをリストの2番目の項目に自動的に移動しますが、ユーザーはいつでも手動でそのビューに戻ることもできます。
@codesterの答えを拡張するには、チェックしてから割り当てる必要はありません。1ステップで行うことができます。
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// Override point for customization after application launch.
if let tabBarController = self.window!.rootViewController as? UITabBarController {
tabBarController.selectedIndex = 1
}
return true
}
ViewControllerはITabBarControllerDelegateの子である必要があります。したがって、次のコードをSwiftに追加するだけです。
self.tabBarController?.selectedIndex = 1
典型的なアプリケーションにはUITabBarControllerがあり、3つ以上のUIViewControllerをタブとして埋め込みます。このような場合、UITabBarControllerをYourTabBarControllerとしてサブクラス化すると、選択したインデックスを簡単に設定できます:
selectedIndex = 1 // Displays 2nd tab. The index starts from 0.
他のビューからYourTabBarControllerに移動している場合、そのビューコントローラーのprepare(for segue :)メソッドで次のことができます。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
if segue.identifier == "SegueToYourTabBarController" {
if let destVC = segue.destination as? YourTabBarController {
destVC.selectedIndex = 0
}
}
Xcode 10およびSwift 4.2でタブを設定するこの方法を使用しています。