覆盖 TabBarController 中 ViewController 的类型?

Override type for ViewControllers in TabBarController?

我正在尝试覆盖 viewControllers 方式的类型。

override var viewControllers : [BaseViewController]? {
    get {
        return self.viewControllers
    }
}

但是我得到这个错误。

Property 'viewControllers' with type '[BaseViewController]?' cannot override a property with type '[UIViewController]?'

这能做到吗?

您可以通过创建新的 属性 来解决它。比如这个。

var baseViewControllers: [BaseViewController]? {
      return self.viewControllers as? [BaseViewController] 
}

您不能覆盖已经属于 UIViewController 类型的属性类型。您可以做的是将 属性 viewControllers 转换为 [BaseViewController]?.

class base: UIViewController {

}

class tab: UITabBarController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let bases = viewControllers as? [base]
  }
  override var viewControllers: [UIViewController]? {
    get {
        return [base()]
    }
    set {

    }
  }
}