2010-02-24 106 views
15

我是iphone开发新手。我正在创建一个基于视图的应用程序。我在视图中添加了一个标签栏(而不是标签栏控制器)。通过将标签栏项目的标签值设置为1,2,我已经加载了每个标签栏上的标签栏项目点击事件的视图。我想默认选择标签栏1。我该怎么做?如何设置标签栏项目1默认情况下在iphone中选择?

这里是我的代码: -

- (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; 
    } 
} 

我加在界面的标签栏builder.Can我做接口生成器中所有的事情吗?

请帮我一下。谢谢。

+2

你为什么不再次使用TabBarController? – Bearddo 2010-02-24 16:37:34

+7

因为TabBarController会添加各种令人头疼的事情。你会以非常高的价格获得方便。您不能将UITabBarControllers添加到导航控制器中。这只是丑陋的。不幸的是,Apple没有提供有关创建简单UITabBar的好文档,所有在线教程都使用XIB而不是代码。丑陋,丑陋,丑陋! – 2011-07-29 02:17:59

+0

选择时是否要更改标签栏上图像的颜色? – 2012-06-08 08:45:06

回答

9

难道你只是调用你的方法来选择一个选项卡,每当你显示视图?像这样:

[self activateTab:1]; 

要更改标签栏项目中选择使用:

[myTabBar setSelectedItem:myTabBarItem]; 

哪里myTabBarItem是相关视图您UITabBarItem实例。

35
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]]; 
+11

这是错误的:“objectAtIndex:item.tag”。标签可以与数组中的索引无关。所以,只有当标签的编号与数组索引相同时(例如0 - 4) – Toad 2014-04-18 12:03:53

2

中夫特1.2完美的我以下工作

myTabBar.selectedItem = myTabBarItem 

其中myTabBar和myTabBarItem是IBOutlets到故事板的各个元件。

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. 
} 
0

一定要设置UITabBar的代表在Interface Builder是视图控制器类,并在类的@interface声明后设置<UITabBarDelegate>

,那么你可以设置第一个选项卡来为这样强调:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

如果UITabBar尚未通过的UITabBarController

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

处理这里的TabBar对于UITabBar出路。

如果UITabBar已经被一个的UITabBarController

[self.tabBarController setSelectedIndex:1]; 
4

处理您可以通过设置selectedIndex属性设置TabBarController的默认索引。这可以放在viewDidLoad中或在推动控制器之前,如果你这样做。这仅在使用TabBarController而不仅仅是TabBar时完成。

tabBarController.selectedIndex = 1; 

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

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1]; 
9

对于swift 3。0,如果是的TabBar在viewDidLoad中@IBOutlet使用:

tabBar.selectedItem = tabBar.items![0] 
+1

,您才可以使用tabBar.items?.first而不是tabBar.items![0] – 2017-10-25 14:30:21

1

斯威夫特3:

@IBOutlet weak var uiTabBarOutlet: UITabBar! 

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

斯威夫特4:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.selectTab(at: 1, animated: false) 
} 
相关问题