2010-02-24 139 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) 
} 
相關問題