在启动时选择TabBarItem

时间:2011-07-29 20:38:53

标签: iphone ios4 tabbar selecteditem

我使用Xcode 4处理iPhone iOS4的项目。

我在IB中创建了一个带有三个UITabBarItem的UITabBar。我没有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

3 个答案:

答案 0 :(得分:3)

在标签栏上调用-setSelectedItem:用于以编程方式将UITabBarItems移动到标签栏上的不同位置。

要更改选定的选项卡,您需要更改UITabBarController实例上的selectedIndex属性。 tabBarController上的属性UIViewController由Interface Builder自动设置。请在-viewDidLoad中尝试此操作:

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

答案 1 :(得分:0)

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

[self.tabBarController setSelectedIndex:3];

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

答案 2 :(得分:-1)

试一试!

tabBar.selectedIndex = 1;