我是iPhone开发的新手。我正在创建基于视图的应用程序。我在视图中添加了一个标签栏(而不是标签栏控制器)。通过将标签栏项目的标签值设置为1,2,我已在tabbar项目单击事件上为每个标签栏加载了视图。
我希望默认选中标签栏1。我该怎么做?
这是我的代码:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"didSelectItem: %d", item.tag);
[self activateTab:item.tag];
}
- (void)activateTab:(int)index {
switch (index) {
case 1:
self.tab1ViewController =[[tab1 alloc] initWithNibName:@"tab1" bundle:nil];
[self.view insertSubview:tab1ViewController.view belowSubview:tabbar1];
if (currentViewController != nil)
[currentViewController.view removeFromSuperview];
currentViewController = tab1ViewController;
break;
case 2:
self.tab2ViewController =[[tab2 alloc] initWithNibName:@"tab2" bundle:nil];
[self.view insertSubview:tab2ViewController.view belowSubview:tabbar1];
if (currentViewController != nil)
[currentViewController.view removeFromSuperview];
currentViewController = tab2ViewController;
break;
default:
break;
}
}
我在界面构建器中添加了标签栏。我可以在界面构建器中做任何事情吗?
答案 0 :(得分:36)
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
答案 1 :(得分:13)
对于swift,如果tabBar在viewDidLoad中使用@IBOutlet
:
tabBar.selectedItem = tabBar.items?.first
答案 2 :(得分:9)
您是否只能在显示视图时调用方法选择选项卡?像这样:
[self activateTab:1];
要更改选择的标签栏项目,请使用:
[myTabBar setSelectedItem:myTabBarItem];
其中myTabBarItem是相关视图的UITabBarItem实例。
答案 3 :(得分:6)
您可以通过设置selectedIndex属性来设置TabBarController的默认索引。这可以放在viewDidLoad中或者在推送控制器之前如果你这样做的话。只有在使用TabBarController而不仅仅是TabBar时才能执行此操作。
tabBarController.selectedIndex = 1;
如果您使用的是没有TabBarController的TabBar,那么您必须这样做。
self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
答案 4 :(得分:3)
如果UITabBar尚未由UITabBarController处理
[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];
这里TabBar是UITabBar的Outlet。
如果UITabBar已由UITabBarController处理
[self.tabBarController setSelectedIndex:1];
答案 5 :(得分:2)
以下在Swift 1.2中完美适用于我
myTabBar.selectedItem = myTabBarItem
其中myTabBar和myTabBarItem是故事板上各个元素的IBOutlets。
答案 6 :(得分:2)
斯威夫特3:
@IBOutlet weak var uiTabBarOutlet: UITabBar!
uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0]
答案 7 :(得分:0)
我是如何使用UITabBarDelegate
创建的:
#import "InfoSecurity.h"
#import "TabsCell.h"
@interface InfoSecurity () <UITabBarDelegate>
@property (strong, nonatomic) IBOutlet UITabBar *mainTab;
@property(weak,nonatomic) NSArray *TabArray;
@end
@implementation InfoSecurity
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
if (_mainTab.selectedItem.tag == 1) {
NSLog(@"TAB 1");
}
else if (_mainTab.selectedItem.tag == 2) {
NSLog(@"TAB2");
}
else if (_mainTab.selectedItem.tag == 3)
{
NSLog(@"TAB3");
}
else
{
NSLog(@"TAB NOT WORKING");
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
答案 8 :(得分:0)
请记住在界面构建器中将UITabBar的委托设置为视图控制器的类,并在类中的<UITabBarDelegate>
声明后设置@interface
。
然后您可以将第一个标签设置为高亮显示:
- (void)viewDidLoad {
[super viewDidLoad];
if (tabBar.items.count >= 1) {
[tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
}
}