覆盖 TabBar selectedIndex
Overriding TabBar selectedIndex
我有一个 viewController 继承自 UITabBarController .
我正在尝试覆盖 selectedIndex 变量,以便在 didSet 更改它时我可以收到通知,如下面的代码。
override var selectedIndex: Int {
didSet {
refreshTabBar()
}
}
问题在于,当标签更改时,该功能未被调用,我需要知道为什么。
PS: 我不想从 didSelect 委托方法中调用它。
谢谢。
以编程方式设置 selectedIndex
以调用函数
class FirstViewController: TabViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.selectedIndex = 1
}
}
class TabViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
}
override var selectedIndex: Int{
didSet {
refreshTabBar()
}
}
}
正如苹果文档所说 selectedIndex
:
This property nominally represents an index into the array of the
viewControllers property.
所以它是从 viewControllers 中计算出 属性 which returns selectedViewController 的 firstIndex。
并在设置时更改 selectedViewController。
改用其他一些 UITabBarController 属性。 F.e:
override var selectedViewController: UIViewController? {
didSet {
print(selectedIndex)
refreshTabBar()
}
}
我有一个 viewController 继承自 UITabBarController .
我正在尝试覆盖 selectedIndex 变量,以便在 didSet 更改它时我可以收到通知,如下面的代码。
override var selectedIndex: Int {
didSet {
refreshTabBar()
}
}
问题在于,当标签更改时,该功能未被调用,我需要知道为什么。
PS: 我不想从 didSelect 委托方法中调用它。
谢谢。
以编程方式设置 selectedIndex
以调用函数
class FirstViewController: TabViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.selectedIndex = 1
}
}
class TabViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
}
override var selectedIndex: Int{
didSet {
refreshTabBar()
}
}
}
正如苹果文档所说 selectedIndex
:
This property nominally represents an index into the array of the viewControllers property.
所以它是从 viewControllers 中计算出 属性 which returns selectedViewController 的 firstIndex。 并在设置时更改 selectedViewController。
改用其他一些 UITabBarController 属性。 F.e:
override var selectedViewController: UIViewController? {
didSet {
print(selectedIndex)
refreshTabBar()
}
}