选项卡栏上的选定索引在 Swift 上不起作用
Selected Index on Tab Bar not working on Swift
我想通过 selectedIndex
更改 UITabBar
/ UITabBarController
的默认选定视图控制器。
我尝试了在其他线程中看到的其他解决方案,例如在 AppDelegate
或 ViewDidAppear
中更改它,如下所示:
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupTabBar()
}
override func viewDidAppear(_ animated: Bool) {
// this is the attempt to set the selected index that doesn't work
self.tabBarController?.selectedIndex = 2
}
func setupTabBar(){
let vc1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainvc")
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "secondvc")
let vc3 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "thirdvc")
let FirstController = UINavigationController(rootViewController: vc1)
let SecondController = UINavigationController(rootViewController: vc2)
let ThirdController = UINavigationController(rootViewController: vc3)
viewControllers = [FirstController, SecondController, ThirdController]
}
}
到目前为止没有任何效果,它始终显示所选索引 = 0。
我在Main storyboard
中将标签栏视图控制器设置为初始视图控制器。我应该在 AppDelegate
中执行此操作吗?
你是说
class MainTabBarController: UITabBarController {
所以self
指的是一个UITabBarController
,但是你设置的是tabBarController
ofself
的选择索引:
self.tabBarController?.selectedIndex = 2
self
中没有嵌入标签栏控制器。 self
本身 是 一个标签栏控制器!你可以只设置 self.selectedIndex
:
self.selectedIndex = 2
此外,您应该在 viewDidLoad
而不是 viewDidAppear
中执行此操作,因为 viewDidAppear
可能会发生很多次(例如,每次关闭某个模态控制器时)。 viewDidLoad
只会调用一次。
我想通过 selectedIndex
更改 UITabBar
/ UITabBarController
的默认选定视图控制器。
我尝试了在其他线程中看到的其他解决方案,例如在 AppDelegate
或 ViewDidAppear
中更改它,如下所示:
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupTabBar()
}
override func viewDidAppear(_ animated: Bool) {
// this is the attempt to set the selected index that doesn't work
self.tabBarController?.selectedIndex = 2
}
func setupTabBar(){
let vc1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainvc")
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "secondvc")
let vc3 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "thirdvc")
let FirstController = UINavigationController(rootViewController: vc1)
let SecondController = UINavigationController(rootViewController: vc2)
let ThirdController = UINavigationController(rootViewController: vc3)
viewControllers = [FirstController, SecondController, ThirdController]
}
}
到目前为止没有任何效果,它始终显示所选索引 = 0。
我在Main storyboard
中将标签栏视图控制器设置为初始视图控制器。我应该在 AppDelegate
中执行此操作吗?
你是说
class MainTabBarController: UITabBarController {
所以self
指的是一个UITabBarController
,但是你设置的是tabBarController
ofself
的选择索引:
self.tabBarController?.selectedIndex = 2
self
中没有嵌入标签栏控制器。 self
本身 是 一个标签栏控制器!你可以只设置 self.selectedIndex
:
self.selectedIndex = 2
此外,您应该在 viewDidLoad
而不是 viewDidAppear
中执行此操作,因为 viewDidAppear
可能会发生很多次(例如,每次关闭某个模态控制器时)。 viewDidLoad
只会调用一次。