23

我是 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;
    }
}

我在界面生成器中添加了标签栏。我可以在界面生成器中做任何事情吗?

4

9 回答 9

36
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
于 2010-08-11T07:47:03.023 回答
19

如果在 viewDidLoad 中使用了 tabBar,则快速@IBOutlet

tabBar.selectedItem = tabBar.items?.first
于 2016-05-24T16:10:45.977 回答
10

您不能在显示视图时调用您的方法来选择一个选项卡吗?像这样:

[self activateTab:1];

要更改选择了哪个选项卡栏项目,请使用:

[myTabBar setSelectedItem:myTabBarItem];

其中 myTabBarItem 是相关视图的 UITabBarItem 实例。

于 2010-02-24T12:13:40.560 回答
8

您可以通过设置 selectedIndex 属性来设置 TabBarController 的默认索引。如果你这样做,这可以放在 viewDidLoad 或在推送控制器之前。仅当您使用 UITabBarController 而不仅仅是 UITabBar 时才会这样做。

self.tabBarController.selectedIndex = 1

如果您使用的是没有 TabBarController 的 TabBar,那么您必须这样做。

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1]
于 2016-04-19T04:56:40.697 回答
3

如果 UITabBar 尚未由 UITabBarController 处理

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

这里 TabBar 是 UITabBar 的 Outlet。

如果 UITabBar 已经由 UITabBarController 处理

[self.tabBarController setSelectedIndex:1];
于 2015-11-20T07:16:52.223 回答
3

斯威夫特 3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 
于 2017-06-05T10:45:45.003 回答
2

以下内容在 Swift 1.2 中非常适合我

myTabBar.selectedItem = myTabBarItem

其中 myTabBar 和 myTabBarItem 是情节提要上各个元素的 IBOutlets。

于 2015-07-14T04:28:14.230 回答
0

记得在接口生成器中将UITabBar的委托设置为视图控制器的类,并在类中声明<UITabBarDelegate>之后设置。@interface

然后,您可以将第一个选项卡设置为突出显示,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];

    if (tabBar.items.count >= 1) {
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    }
}
于 2015-08-03T02:51:25.280 回答
0

我是如何做到的,使用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.
}
于 2015-07-29T09:49:51.070 回答