在TabBarController中覆盖ViewControllers的类型?

时间:2016-03-01 08:57:54

标签: ios swift uikit uitabbarcontroller

我试图以viewControllers方式覆盖类型。

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

但是我收到了这个错误。

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

甚至可以这样做吗?

2 个答案:

答案 0 :(得分:2)

您可以通过创建新属性来解决此问题。比如这样。

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

答案 1 :(得分:1)

您不能覆盖已经是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 {

    }
  }
}