如何在iphone中设置默认选中Tab bar item 1?
Posted
技术标签:
【中文标题】如何在iphone中设置默认选中Tab bar item 1?【英文标题】:How to set the Tab bar item 1 to be selected by default in iphone? 【发布时间】:2010-02-24 12:06:51 【问题描述】:我是 iPhone 开发的新手。我正在创建一个基于视图的应用程序。我在视图中添加了一个标签栏(而不是标签栏控制器)。通过将标签栏项目的标签值设置为 1、2,我已经在标签栏项目点击事件上加载了每个标签栏的视图。
我希望默认选择标签栏 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;
我在界面生成器中添加了标签栏。我可以在界面生成器中做任何事情吗?
【问题讨论】:
你为什么不再使用 TabBarController 了? 因为 TabBarController 添加了各种令人头疼的问题。您可以以非常高昂的价格获得便利。您不能将 UITabBarControllers 添加到导航控制器中。这只是丑陋的。不幸的是,Apple 没有提供关于创建一个简单的 UITabBar 的良好文档,并且所有在线教程都使用 XIBs 而不是代码.. 丑陋,丑陋,丑陋!!!! 选中后是否要更改标签栏上的图片颜色? @HenleyChiu “您不能将 UITabBarControllers 添加到导航控制器中”:正确,但是您可以将导航控制器添加到每个 UITabBarController 的视图控制器。如果您考虑应用程序的导航,那么以这种方式设置视图架构会更有意义。鉴于切换选项卡是一种模态转换,因此在不同选项卡之间使用相同的导航控制器是没有意义的——切换选项卡时导航堆栈会发生什么? 【参考方案1】:[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
【讨论】:
这是错误的:“objectAtIndex:item.tag”。标签可以与数组中的索引无关。因此,这只适用于标签编号与数组索引相同的情况(例如 0 - 4)【参考方案2】:如果 tabBar 是 @IBOutlet
则在 viewDidLoad 中使用 swift:
tabBar.selectedItem = tabBar.items?.first
【讨论】:
你可以用tabBar.items?.first
代替tabBar.items![0]
【参考方案3】:
您不能在显示视图时调用您的方法来选择一个选项卡吗?像这样:
[self activateTab:1];
要更改选择了哪个标签栏项目,请使用:
[myTabBar setSelectedItem:myTabBarItem];
其中 myTabBarItem 是相关视图的 UITabBarItem 实例。
【讨论】:
【参考方案4】:您可以通过设置 selectedIndex 属性来设置 TabBarController 的默认索引。这可以放在 viewDidLoad 或在推送控制器之前,如果你这样做的话。仅当您使用 UITabBarController 而不仅仅是 UITabBar 时才会这样做。
self.tabBarController.selectedIndex = 1
如果您使用的是没有 TabBarController 的 TabBar,那么您必须这样做。
self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1]
【讨论】:
【参考方案5】:如果 UITabBar 尚未由 UITabBarController 处理
[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];
这里的 TabBar 是 UITabBar 的 Outlet。
如果 UITabBar 已由 UITabBarController 处理
[self.tabBarController setSelectedIndex:1];
【讨论】:
【参考方案6】:斯威夫特 3:
@IBOutlet weak var uiTabBarOutlet: UITabBar!
uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0]
【讨论】:
【参考方案7】:以下内容在 Swift 1.2 中非常适合我
myTabBar.selectedItem = myTabBarItem
其中 myTabBar 和 myTabBarItem 是情节提要上各个元素的 IBOutlets。
【讨论】:
【参考方案8】:我是如何做到的,使用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.
【讨论】:
【参考方案9】:记得在界面生成器中将UITabBar的委托设置为视图控制器的类,并在类中的@interface
声明之后设置<UITabBarDelegate>
。
然后您可以将第一个选项卡设置为突出显示:
- (void)viewDidLoad
[super viewDidLoad];
if (tabBar.items.count >= 1)
[tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
【讨论】:
以上是关于如何在iphone中设置默认选中Tab bar item 1?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 window.print 在打印预览中设置默认选中/启用的背景图形选项
在 UITableViewController 中设置默认选中的单元格