web-dev-qa-db-ja.com

ストーリーボードを使用するときにデフォルトのタブを設定する

IOSでストーリーボードを使用するときにデフォルトタブを設定する方法を教えてください。これを達成する方法がわからないようです。

ありがとうございました

53
user1145581

次の2つの方法のいずれかを使用できます。

tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];

またはオブジェクトからの直接メソッド

[tabBar setSelectedItem:myUITabBarItem];

または、これらを組み合わせてこれを行うことができます。

tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];

しかし、私はまだその方法をテストしていません、これが役立つことを願っています!

11
Trevor Rudolph

他の回答と同じようにプログラムで初期選択タブを設定できますが、コードに触れることなくストーリーボードで同じことを実現するには、次を実行します。

  1. ストーリーボードインターフェイスでTab Bar Controllerを選択します
  2. [ユーティリティ]パネルにIDインスペクターを表示する
  3. 新しい「ユーザー定義のランタイム属性」を追加します
  4. キーパスを「selectedIndex」に設定します
  5. タイプを「数値」に設定します
  6. 値を選択するタブのインデックスに設定します(たとえば、値1は2番目のタブを選択します)
  7. ストーリーボードを保存し、アプリケーションをビルドして実行します

これは、上記のステップを達成したときにどのように見えるかです。

121
Joshua Finch

UITabBarControllerをサブクラス化するのはやり過ぎのように思えるかもしれませんが、最もクリーンなソリューションを提供すると思います。

  1. BaseTabBarController.Swiftを作成
  2. @IBInspectableを追加して、viewDidLoadに設定します。

    class BaseTabBarController: UITabBarController {
    
        @IBInspectable var defaultIndex: Int = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
            selectedIndex = defaultIndex
        }
    
    }
    
  3. ストーリーボードで、UITabBarControllerを新しいサブクラスに設定します。

enter image description here

  1. Attributes Inspectorに移動し、新しいプロパティを設定しますデフォルトインデックス

enter image description here

  1. タダ! (:
73
Aviel Gross
  1. UITabBarControllerの新しいファイルサブクラスを作成します。
  2. viewDidLoadの最後にこれを追加してください:

    self.selectedIndex = 1;

  3. この新しいファイルを、ストーリーボードのUITabBarControllerのカスタムクラスとして設定します。

できました。

29
maxagaz

次のコードは私のために働いた:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;
22
Rahul Singh

appdelegateでapplicationDidBecomeActive関数を見つけ、この行を追加します

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want
3
zizutg

TabBarControllerviewDidLoad()で、selectedIndexを任意の値に設定します。 (0が最初で、3は4番目などです)

2
jake

これはXcode 8以降で実現できます(テストしたばかりで、このバージョンより前に入手可能かどうかわかりません)

@ジョシュア・フィンチが言ったように手順を実行しますが、

  1. TabBarの代わりにバー項目を選択します
  2. 「ユーザー定義のランタイム属性」に移動しました
  3. 新しいキーを追加
  4. 「selected」という名前を付けます
  5. タイプをブールに設定し、trueを選択するか、チェックボックスをオンにします
1

私のバリアントは、デフォルトの選択されたコントローラーを変更するだけで、カスタマイズする必要がない場合に適しています。以下を追加するだけですcategory

//  UITabBarController+DefaultPage.h
#import <UIKit/UIKit.h>

@interface UITabBarController(DefaultPage)

@end


//  UITabBarController+DefaultPage.m
#import "UITabBarController+DefaultPage.h"

@implementation UITabBarController(DefaultPage)

- (void)viewDidLoad {
    [super viewDidLoad];

    self.selectedIndex = 1;
}

@end

p.s:@ joshua-finch answer が好きです

1
WINSergey

Aviel Grossの答えに基づいて、UITabBarControllerではなく、UITabBarにこれを実装したかっただけです。これは次のように実行できます。

class BaseTabBar: UITabBar {

    @IBInspectable var defaultIndex: Int = 0 {
        didSet {
            self.selectedItem = self.items?[defaultIndex]
        }
    }
}
0
ThomasHaz

たとえば、UITabBarControllerに移動している場合。ログイン画面では、選択をそこに設定するのが最も簡単です:

        let tabs = self.storyboard?.instantiateViewController(withIdentifier: "tabs") as! UITabBarController
        tabs.selectedIndex = 1
        self.present(tabs, animated:false)
0
Anton Duzenko

InterfaceBuilderで、すべてのセグエを切断し、表示したい順序で再接続します。

0
MH175