我使用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
答案 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;