我的应用程序嵌入在 TabBarController
中,我试图从 ViewController
切换选定的选项卡。
通过以下几行,我希望找出该功能是否有效,不幸的是它没有,但我不确定为什么,任何人都可以帮助我哪里出错了?
func tabbar() { self.tabBarController?.selectedIndex = 4 }
override func viewDidLoad() {
super.viewDidLoad()
tabbar()
}
PS:我测试这个的原因是因为我想知道以下是否适用于我的 3DTouchShortcuts
。我知道 3D Touch 快捷方式出现并打开初始 View Controller ,我希望每种情况的以下行实际上会使快捷方式打开到不同的选项卡。
tababarController.selectedIndex = 1
private func handleShortcutItem(shortcutItem: UIApplicationShortcutItem) {
if let rootViewController = window?.rootViewController, let shortcutItemType = ShortcutItemType(shortcutItem: shortcutItem) {
let tabbarController = rootViewController as! UITabBarController
switch shortcutItemType {
case .AddItem:
NSNotificationCenter.defaultCenter().postNotificationName("performsegueAddItem", object: nil)
tabbarController.selectedIndex = 1
break
case .FavouritesTab:
tabbarController.selectedIndex = 2
break
}
}
}
最佳答案
你只需要在 viewDidLayoutSubviews
而不是 viewDidLoad
中调用它,你应该在调用它时使用 tabBarController
。您还应该使用 guard
来解包它:
override func viewDidLayoutSubviews() {
guard let tabBarController = tabBarController else { return }
tabBarController.selectedIndex = 0
}
关于ios - 无法使用 self.tabBarController?.selectedIndex 更改选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096855/