任何人都可以告诉我如何在iOS中使用故事板时设置默认选项卡。我似乎无法弄清楚如何实现这一目标。
谢谢
答案 0 :(得分:120)
虽然您可以像其他答案一样以编程方式设置初始选定的标签,但要在故事板中实现相同而不触及代码,您将执行以下操作:
这应该是您完成上述步骤后的样子:
答案 1 :(得分:68)
对于某些子类UITabBarController
,似乎有些过分,但我认为它提供了最干净的解决方案。
BaseTabBarController.swift
添加@IBInspectable
并将其设置为viewDidLoad
:
class BaseTabBarController: UITabBarController {
@IBInspectable var defaultIndex: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
selectedIndex = defaultIndex
}
}
在故事板中,将UITabBarController
设置为您的新子类:
答案 2 :(得分:29)
UITabBarController
; 在viewDidLoad
:
self.selectedIndex = 1;
将此新文件设置为故事板UITabBarController
中的自定义类。
你已经完成了。
答案 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)
applicationDidBecomeActive
函数并添加以下行
let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want
答案 7 :(得分:1)
你可以通过Xcode 8或更高版本实现这一点(只测试它并且不知道它是否在此版本之前可用)
按照@Joshua Finch所说的那样做,但是:
答案 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中,断开所有序列,然后按照您希望它们出现的顺序重新连接它们。