如何在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声明之后设置&lt;UITabBarDelegate&gt;

然后您可以将第一个选项卡设置为突出显示:

- (void)viewDidLoad 
    [super viewDidLoad];

    if (tabBar.items.count >= 1) 
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    

【讨论】:

以上是关于如何在iphone中设置默认选中Tab bar item 1?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 window.print 在打印预览中设置默认选中/启用的背景图形选项

如何在gvim中设置tab键为4个空格 永久性

在 UITableViewController 中设置默认选中的单元格

如何在设置页面中设置打开和关闭iphone声音的开关

mapreduce中设置自定义的输入类,进行文本解析(默认以tab键为分隔符)

如何在 iText 7 中设置 Tab 键顺序?