使用故事板时设置默认选项卡

时间:2012-10-30 10:08:22

标签: ios uitabbarcontroller storyboard uitabbar

任何人都可以告诉我如何在iOS中使用故事板时设置默认选项卡。我似乎无法弄清楚如何实现这一目标。

谢谢

12 个答案:

答案 0 :(得分:120)

虽然您可以像其他答案一样以编程方式设置初始选定的标签,但要在故事板中实现相同而不触及代码,您将执行以下操作:

  1. 在故事板界面中选择标签栏控制器
  2. 在“工具”面板中显示“身份检查器”
  3. 添加新的“用户定义的运行时属性”
  4. 将关键路径设置为“selectedIndex”
  5. 将类型设置为“数字”
  6. 将值设置为您要选择的选项卡的索引(例如,值1将选择第二个选项卡)
  7. 保存故事板,构建并运行应用程序
  8. 这应该是您完成上述步骤后的样子:

答案 1 :(得分:68)

对于某些子类UITabBarController,似乎有些过分,但我认为它提供了最干净的解决方案。

  1. 创建BaseTabBarController.swift
  2. 添加@IBInspectable并将其设置为viewDidLoad

    class BaseTabBarController: UITabBarController {
    
        @IBInspectable var defaultIndex: Int = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
            selectedIndex = defaultIndex
        }
    
    }
    
  3. 在故事板中,将UITabBarController设置为您的新子类:

  4. enter image description here

    1. 转到属性检查器添加新属性默认索引<​​/ strong>:
    2. enter image description here

      1. TA-哒! (:

答案 2 :(得分:29)

  1. 创建UITabBarController;
  2. 的新文件子类
  3. viewDidLoad

    的末尾添加此内容

    self.selectedIndex = 1;

  4. 将此新文件设置为故事板UITabBarController中的自定义类。

  5. 你已经完成了。

答案 3 :(得分:22)

以下代码对我有用:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;

答案 4 :(得分:11)

您可以使用以下两种方法之一:

tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];

或来自对象的直接方法

[tabBar setSelectedItem:myUITabBarItem];

或者您可以将它们组合起来执行此操作:

tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];

但我还没有测试过这种方法,希望这有帮助!

答案 5 :(得分:2)

viewDidLoad()的{​​{1}}中,将TabBarController设置为您想要的任何内容。 (selectedIndex将是第一个,0将是第四个,等等。)

答案 6 :(得分:1)

在appdelegate中查找applicationDidBecomeActive函数并添加以下行

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want

答案 7 :(得分:1)

你可以通过Xcode 8或更高版本实现这一点(只测试它并且不知道它是否在此版本之前可用)

按照@Joshua Finch所说的那样做,但是:

  1. 选择条形图项而不是TabBar
  2. 获得“用户定义的运行时属性”
  3. 添加新密钥
  4. 将其命名为“已选中”
  5. 将其类型设置为布尔值并选择true /或选中复选框

答案 8 :(得分:1)

我的变体适用于您想要仅更改默认选择的控制器,而无需进行更多自定义。只需添加以下类别

//  UITabBarController+DefaultPage.h
#import <UIKit/UIKit.h>

@interface UITabBarController(DefaultPage)

@end


//  UITabBarController+DefaultPage.m
#import "UITabBarController+DefaultPage.h"

@implementation UITabBarController(DefaultPage)

- (void)viewDidLoad {
    [super viewDidLoad];

    self.selectedIndex = 1;
}

@end

p.s:我更喜欢@ joshua-finch answer

答案 9 :(得分:0)

基于Aviel Gross的回答,我只是想为UITabBar实现这个,而不是UITabBarController。这可以按如下方式完成:

class BaseTabBar: UITabBar {

    @IBInspectable var defaultIndex: Int = 0 {
        didSet {
            self.selectedItem = self.items?[defaultIndex]
        }
    }
}

答案 10 :(得分:0)

假设您要从导航至UITabBarController在登录屏幕上,在那里进行选择可能最省心:

        let tabs = self.storyboard?.instantiateViewController(withIdentifier: "tabs") as! UITabBarController
        tabs.selectedIndex = 1
        self.present(tabs, animated:false)

答案 11 :(得分:0)

在InterfaceBuilder中,断开所有序列,然后按照您希望它们出现的顺序重新连接它们。