如何设置标签栏项目1默认情况下在iphone中选择?
我是iphone开发新手。我正在创建一个基于视图的应用程序。我在视图中添加了一个标签栏(而不是标签栏控制器)。通过将标签栏项目的标签值设置为1,2,我已经加载了每个标签栏上的标签栏项目点击事件的视图。我想默认选择标签栏1。我该怎么做?如何设置标签栏项目1默认情况下在iphone中选择?
这里是我的代码: -
- (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;
}
}
我加在界面的标签栏builder.Can我做接口生成器中所有的事情吗?
请帮我一下。谢谢。
难道你只是调用你的方法来选择一个选项卡,每当你显示视图?像这样:
[self activateTab:1];
要更改标签栏项目中选择使用:
[myTabBar setSelectedItem:myTabBarItem];
哪里myTabBarItem是相关视图您UITabBarItem实例。
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
这是错误的:“objectAtIndex:item.tag”。标签可以与数组中的索引无关。所以,只有当标签的编号与数组索引相同时(例如0 - 4) – Toad 2014-04-18 12:03:53
中夫特1.2完美的我以下工作
myTabBar.selectedItem = myTabBarItem
其中myTabBar和myTabBarItem是IBOutlets到故事板的各个元件。
我如何做它,使用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.
}
一定要设置UITabBar的代表在Interface Builder是视图控制器类,并在类的@interface
声明后设置<UITabBarDelegate>
。
,那么你可以设置第一个选项卡来为这样强调:
- (void)viewDidLoad {
[super viewDidLoad];
if (tabBar.items.count >= 1) {
[tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
}
}
如果UITabBar尚未通过的UITabBarController
[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];
处理这里的TabBar对于UITabBar出路。
如果UITabBar已经被一个的UITabBarController
[self.tabBarController setSelectedIndex:1];
处理您可以通过设置selectedIndex属性设置TabBarController的默认索引。这可以放在viewDidLoad中或在推动控制器之前,如果你这样做。这仅在使用TabBarController而不仅仅是TabBar时完成。
tabBarController.selectedIndex = 1;
如果您使用的TabBar没有TabBarController,那么你必须这样做。
self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
对于swift 3。0,如果是的TabBar在viewDidLoad中@IBOutlet
使用:
tabBar.selectedItem = tabBar.items![0]
,您才可以使用tabBar.items?.first而不是tabBar.items![0] – 2017-10-25 14:30:21
斯威夫特3:
@IBOutlet weak var uiTabBarOutlet: UITabBar!
uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0]
斯威夫特4:
override func viewDidLoad() {
super.viewDidLoad()
self.selectTab(at: 1, animated: false)
}
你为什么不再次使用TabBarController? – Bearddo 2010-02-24 16:37:34
因为TabBarController会添加各种令人头疼的事情。你会以非常高的价格获得方便。您不能将UITabBarControllers添加到导航控制器中。这只是丑陋的。不幸的是,Apple没有提供有关创建简单UITabBar的好文档,所有在线教程都使用XIB而不是代码。丑陋,丑陋,丑陋! – 2011-07-29 02:17:59
选择时是否要更改标签栏上图像的颜色? – 2012-06-08 08:45:06