使用故事板时设置默认选项卡
任何人都可以告诉我如何设置在iOS中使用故事板时的默认选项卡。 我似乎无法弄清楚如何做到这一点。
谢谢
您可以使用以下两种方法之一:
tabBar.items = tabBarItems; tabBar.selectedItem = [tabBarItems objectAtIndex:0];
或从对象直接的方法
[tabBar setSelectedItem:myUITabBarItem];
或者你可以结合他们来做到这一点:
tabBar.items = tabBarItems; [tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];
但我还没有testing该方法,希望这有助于!
虽然您可以像其他答案一样以编程方式设置初始选定的选项卡,但要在故事板中实现相同的效果,而不触摸代码,则需要执行以下操作:
- select故事板界面中的标签栏控制器
- 在“实用程序”面板中显示“标识”检查器
- 添加一个新的“用户定义的运行时属性”
- 将关键path设置为“selectedIndex”
- 将types设置为“数字”
- 将Value设置为您希望select的标签的索引(值为1将select第二个标签)
- 保存故事板,构build并运行应用程序
这应该是你完成上述步骤后的样子:
对于一些UITabBarController
子类来说可能看起来有点矫枉过正,但是,我认为它提供了最干净的解决scheme。
- 创build
BaseTabBarController.swift
-
添加
@IBInspectable
并将其设置在viewDidLoad
:class BaseTabBarController: UITabBarController { @IBInspectable var defaultIndex: Int = 0 override func viewDidLoad() { super.viewDidLoad() selectedIndex = defaultIndex } }
-
在故事板中,将您的
UITabBarController
设置为您的新子类:
- 转到属性检查器添加设置新的属性默认索引 :
- 当当! (:
- 创build一个
UITabBarController
的新文件子类; -
在
viewDidLoad
的最后添加这个:self.selectedIndex = 1;
-
将此新文件设置为Storyboard的
UITabBarController
中的“自定义类”。
你完成了。
下面的代码为我工作:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; tabBarController.selectedIndex = 2;
在TabBarController
的viewDidLoad()
中,将selectedIndex
设置为任何你想要的。 ( 0
将是第一个, 3
将是第四个,等等)
在appdelegate中findapplicationDidBecomeActive
函数并添加这行
let tabBarController = self.window?.rootViewController as! UITabBarController tabBarController.selectedIndex = 0 // any index you want
你可以通过Xcode 8或更高版本来实现这一点(只是testing它,不知道它是否可用之前)
按照@Joshua Finch的说法,但是:
- select条形项而不是TabBar
- 得到“用户定义的运行时属性”
- 添加新的密钥
- 将其命名为“选中”
- 将其types设置为布尔值并selecttrue /或选中checkbox
build立在Aviel Gross的答案,我只是想实现这个UITabBar,而不是一个UITabBarController。 这可以如下完成:
class BaseTabBar: UITabBar { @IBInspectable var defaultIndex: Int = 0 { didSet { self.selectedItem = self.items?[defaultIndex] } } }