【问题标题】:Overriding TabBar selectedIndex覆盖 TabBar selectedIndex
【发布时间】:2020-07-12 07:49:21
【问题描述】:

我有一个继承自 UITabBarController 的 viewController。

我正在尝试覆盖 selectedIndex 变量,以便在使用 didSet 更改时收到通知,如下面的代码所示。

override var selectedIndex: Int {
    didSet {
        refreshTabBar()
    }
}

问题是,当标签发生变化时,该函数没有被调用,我需要知道原因。

PS:我不想从 didSelect 委托方法中调用它。

谢谢。

【问题讨论】:

    标签: ios swift uitabbarcontroller tabbar


    【解决方案1】:

    正如苹果文档所说的selectedIndex

    这个属性名义上表示数组的索引 viewControllers 属性。

    所以它是从 viewControllers 返回 selectedViewController 的 firstIndex 的计算属性。 并在设置时更改 selectedViewController。

    改用其他一些 UITabBarController 属性。 F.e:

    override var selectedViewController: UIViewController? {
        didSet { 
            print(selectedIndex)
            refreshTabBar()
        }
    }
    

    【讨论】:

      【解决方案2】:

      以编程方式设置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()
              }
          }
      }
      

      【讨论】:

      • 我不想继承 UITabBarController 但非常感谢:)
      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 2019-11-27
      • 1970-01-01
      • 2021-06-28
      • 2021-11-19
      • 2012-05-10
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多