Iphone 在启动时选择一个TabBarItem
我在一个使用Xcode 4的iPhoneIOS4项目中工作 我在IB中创建了一个带有三个UITabBarItem的UITabBar。我没有UITabbarController delegate作为代理,而是MainViewController 然后我在MainViewController中实现: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) {
- (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];