【问题标题】:Override type for ViewControllers in TabBarController?TabBarController 中 ViewControllers 的覆盖类型?
【发布时间】:2016-03-01 08:57:53
【问题描述】:

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

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

但是我得到了这个错误。

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

这还能做到吗?

【问题讨论】:

  • 属性不会覆盖其超类中的任何属性

标签: ios swift uikit uitabbarcontroller


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多