web-dev-qa-db-ja.com

iPhoneでタブバーアイテム1がデフォルトで選択されるように設定するにはどうすればよいですか?

IPhone開発は初めてです。ビューベースのアプリケーションを作成しています。ビューにタブバーを追加しました(タブバーコントローラーではありません)。タブバーアイテムのタグ値を1、2に設定することで、タブバーアイテムのクリックイベントで各タブバーのビューをロードしました。

タブバー1をデフォルトで選択したい。そのために何をすべきですか?

これが私のコードです:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    NSLog(@"didSelectItem: %d", item.tag);
    [self activateTab:item.tag];
}

- (void)activateTab:(int)index {
    switch (index) {
        case 1:

                self.tab1ViewController =[[tab1 alloc] initWithNibName:@"tab1" bundle:nil];

            [self.view insertSubview:tab1ViewController.view belowSubview:tabbar1];
            if (currentViewController != nil)
                [currentViewController.view removeFromSuperview];
            currentViewController = tab1ViewController; 
            break;
        case 2:

                self.tab2ViewController =[[tab2 alloc] initWithNibName:@"tab2" bundle:nil];
           [self.view insertSubview:tab2ViewController.view belowSubview:tabbar1];
           if (currentViewController != nil)
                [currentViewController.view removeFromSuperview];
            currentViewController = tab2ViewController;         
            break;
        default:
            break;
    }
}

インターフェースビルダーにタブバーを追加しましたが、インターフェースビルダーで何かできますか?

20
Warrior
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
36
Sca

Swiftの場合、tabBarが@IBOutletの場合、viewDidLoadで使用します。

tabBar.selectedItem = tabBar.items?.first
13
Mat0

ビューを表示するときはいつでも、メソッドを呼び出してタブを選択できませんか?そのようです:

[self activateTab:1];

選択するタブバー項目を変更するには、次のコマンドを使用します。

[myTabBar setSelectedItem:myTabBarItem];

MyTabBarItemは、関連するビューのUITabBarItemインスタンスです。

9
pheelicks

SelectedIndexプロパティを設定することにより、TabBarControllerのデフォルトのインデックスを設定できます。これは、viewDidLoadまたはコントローラーにプッシュする前に行うことができます。これは、TabBarだけではなく、TabBarControllerを使用している場合にのみ行われます。

tabBarController.selectedIndex = 1;

TabBarControllerなしでTabBarを使用している場合は、次のようにする必要があります。

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
6
Vineet Ashtekar

ITabBarがUITabBarControllerによってまだ処理されていない場合

[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];

ここで、TabBarはUITabBarのアウトレットです。

ITabBarがすでにUITabBarControllerによって処理されている場合

[self.tabBarController setSelectedIndex:1];
3

以下はSwift 1.2で私にとって完璧に機能します

myTabBar.selectedItem = myTabBarItem

ここで、myTabBarおよびmyTabBarItemは、ストーリーボード上のそれぞれの要素へのIBOutletです。

2
mohonish

スウィフト3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 
2
user8113980

UITabBarDelegateを使用して作成した方法:

#import "InfoSecurity.h"
#import "TabsCell.h"

@interface InfoSecurity () <UITabBarDelegate>

@property (strong, nonatomic) IBOutlet UITabBar *mainTab;

@property(weak,nonatomic) NSArray *TabArray;


@end

@implementation InfoSecurity

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{

    if (_mainTab.selectedItem.tag == 1) {
        NSLog(@"TAB 1");
    }
    else if (_mainTab.selectedItem.tag == 2) {

        NSLog(@"TAB2");

    }
    else if (_mainTab.selectedItem.tag == 3)
    {
        NSLog(@"TAB3");
    }
    else
    {
        NSLog(@"TAB NOT WORKING");
    }

}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
0
alvin

インターフェイスビルダーでUITabBarのデリゲートをビューコントローラーのクラスに設定し、<UITabBarDelegate> 後に @interfaceクラスの宣言。

次に、最初のタブを強調表示するように設定できます。

- (void)viewDidLoad {
    [super viewDidLoad];

    if (tabBar.items.count >= 1) {
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    }
}
0
Rob