2011-07-29 34 views
1

選擇TabBarItem我對某個項目的iPhone iOS4的和Xcode 4在啓動時可

我創建中的UITabBar一樣,有三個UITabBarItem,在IB。我沒有UITabBarControllerDelegate作爲委託,但MainViewController。

然後我MainViewController實現:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    switch (item.tag) { 
     case 1: 
      [scrollView setContentOffset:(CGPointMake (0,0))]; 
      break; 
     case 2: 
      [scrollView setContentOffset:(CGPointMake (320,0))]; 
      break; 
     case 3: 
      [scrollView setContentOffset:(CGPointMake (640,0))]; 
      break; 
     default: 
      break; 
     } 
    NSLog(@"didSelectItem: %d", item.tag); 
} 

該工程確定,我所想要的。

但我無法在啓動時選擇TabBarItem(在viewDidLoad中)。我嘗試

 [tabBar setSelectedItem:calc]; 
    [tabBar setSelectedItem:1]; 

(cal是MainViewController的ivar)和其他人,但沒有任何作品。任何建議?

謝謝。


這是MainViewController.h

#import "FlipsideViewController.h" 
    #import <CoreData/CoreData.h> 
    #import <QuartzCore/QuartzCore.h> 

    @interface MainViewController : UIViewController <FlipsideViewControllerDelegate> { 

    UITabBar *tabBar; 
    UITabBarItem *diagBarItem; 
    UITabBarItem *calcBarItem; 
} 

@property (nonatomic, retain) IBOutlet UITabBar *tabBar; 
@property (nonatomic, retain) IBOutlet UITabBarItem *diagBarItem; 
@property (nonatomic, retain) IBOutlet UITabBarItem *calcBarItem; 

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

@end 
+0

什麼類型是calc?它是一個NSNumber?如果是這樣,它需要[calc intValue] – Matt

+0

現在我將calc更改爲calcBarItem,[tabBar setSelectedItem:calcBarItem]正常工作!!謝謝你們。 – boscarol

回答

3

你的標籤欄上調用-setSelectedItem:用於標籤欄上的編程方式移動UITabBarItems到不同的地方。

要更改選定的選項卡,您需要更改UITabBarController實例的selectedIndex屬性。 UIViewController上的屬性tabBarController由Interface Builder自動設置。在-viewDidLoad試試這個:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tabBarController.selectedIndex = calc; 
} 
+0

這給出了一個錯誤「不兼容的指針太整數轉換」。 – boscarol

+1

我試過「self.tabBarController.selectedIndex = 1;」這沒有錯誤,但在啓動時,該項目未被選中。 – boscarol

-1

給這個一杆!

tabBar.selectedIndex = 1; 
+0

不工作。錯誤:在UITabBar類型的對象上找不到屬性「selectedIndex」。 Xcode提示「selectedItem」,但這也不起作用(指針轉換不兼容的整數)。 – boscarol

+0

既不工作tabBar.selectedItem = calcBarItem; (calcBarItem是在MainViewController中聲明的屬性)。 – boscarol

0

您需要設置在UITabBarController所選標籤,而不是標籤欄本身:

[self.tabBarController setSelectedIndex:3]; 

正如你說,這是不行的,你確定你在Interface Builder中連接了插座? (假設你用它來創建標籤欄)

+0

這給出了一個錯誤「Instance method selectedIndex not found。 – boscarol

+0

您需要發佈更多代碼才能查看此代碼,因爲這是以編程方式更改制表符的方式。如果它不起作用,那麼聲明會出現問題。你發佈的頭文件,也可能是你的初始化代碼? – antalkerekes

+0

請參閱上面的MainViewController.h – boscarol