Iphone 在启动时选择一个TabBarItem

Iphone 在启动时选择一个TabBarItem,iphone,ios4,tabbar,selecteditem,Iphone,Ios4,Tabbar,Selecteditem,我在一个使用Xcode 4的iPhoneIOS4项目中工作 我在IB中创建了一个带有三个UITabBarItem的UITabBar。我没有UITabbarController delegate作为代理,而是MainViewController 然后我在MainViewController中实现: - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { switch (item.tag) {

我在一个使用Xcode 4的iPhoneIOS4项目中工作

我在IB中创建了一个带有三个UITabBarItem的UITabBar。我没有UITabbarController delegate作为代理,而是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中)。我试着

(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
#导入“FlipsideViewController.h”
#进口
#进口
@接口MainViewController:UIViewController{
UITabBar*tabBar;
Uitabritem*诊断项;
UITabBarItem*calcBarItem;
}
@属性(非原子,保留)IBUtiAbar*tabBar;
@属性(非原子,保留)IBUtiAbaritem*diagBarItem;
@属性(非原子,保留)IBUtiAbaritem*calcBarItem;
-(void)tabBar:(UITabBar*)tabBar didSelectItem:(UITabBarItem*)项;
@结束
试试看

tabBar.selectedIndex = 1;

在选项卡栏上调用
-setSelectedItem:
,可通过编程方式将UITableItems移动到选项卡栏上的不同位置

要更改所选选项卡,您需要更改UITabBarController实例上的
selectedIndex
属性。界面生成器会自动设置
UIViewController
上的属性
tabBarController
。在
-viewDidLoad
中尝试此操作:

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

您需要在
UITabBarController
上设置所选选项卡,而不是在选项卡栏上:

[self.tabBarController setSelectedIndex:3];

正如您所说,这不起作用,您确定已在Interface Builder中连接插座吗?(假设您使用它来创建选项卡栏)

不起作用。错误:在UITabBar类型的对象上找不到属性“selectedIndex”。Xcode建议使用“selectedItem”,但这也不起作用(整数到指针的转换不兼容);(calcBarItem是MainViewController中声明的属性)。这会导致错误“指针太整数转换不兼容”。我尝试了“self.tabBarController.selectedIndex=1”;这不会导致错误,但在启动时未选择该项。calc是什么类型的?这是一个号码吗?如果是这样,它需要是[calc intValue],现在我将calc改为calcBarItem,[tabBar setSelectedItem:calcBarItem]工作了!!。谢谢大家。您需要发布更多的代码来研究这一点,因为这是通过编程更改选项卡的方法。如果它不起作用,则说明您的声明存在一些问题。您可以发布头文件,或者您的初始化代码吗?请参阅上面的MainViewController.h这就是问题所在。选项卡栏项目应该是UITabBarController的一部分。通常,您应该将选项卡栏控制器设置为根视图控制器,并且根据选择的选项卡,该控制器将显示相应的视图。我建议您从Xcode中基于选项卡的应用程序模板开始,这样您就可以看到它是如何在那里实现的
[self.tabBarController setSelectedIndex:3];