2016-03-01 2 views
1

Я пытаюсь переопределить тип для viewControllers образом.Тип переопределения для ViewControllers в TabBarController?

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 { 

    } 
    } 
} 
Смежные вопросы