简体   繁体   中英

Override type for ViewControllers in TabBarController?

I'm trying to override type for viewControllers manner.

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

But I get this error.

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

Can this even be done?

You can workaround it by creating new property. Like this for instance.

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

You cannot override properties type which is already of type UIViewController. What you can do is to cast the property viewControllers to [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 {

    }
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM