2016-03-01 72 views
1

我想覆盖viewControllers方式的类型。在TabBarController中覆盖ViewControllers的类型?

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

但我得到这个错误。

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

这甚至可以完成?

+0

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

回答

2

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

var baseViewControllers: [BaseViewController]? { 
     return self.viewControllers as? [BaseViewController] 
} 
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 { 

    } 
    } 
}