2016-09-12 2 views
-1

У меня есть класс, который наследуется от другого класса.Как получить доступ к методам класса при множественном наследовании на Swift?

class Profile: UserData{ 
} 

И в то же время UserData наследуется от UIViewController.

Проблема возникает потому, что мне нужно, что Profile класс также наследует от UITabBarController, и мне нужно, чтобы получить доступ к методам класса UserData из Profile класса.

То, что я попытался это:

class Profile: UITabBarController{ 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     UserData().doStuff() 
    } 
} 

, но это не работает для меня, потому что мне нужно, чтобы наследовать полный класс (метод работает только тогда, когда я использую class Profile: UserData).

Я знаю о протоколах, и я попытался наследовать по протоколу класс UserData, но он также не разрешен. Я также пытался копировать методы UserData класса по этому протоколу, но он дает мне следующую ошибку:

Protocol methods may not have bodies

Как, на данный момент, это невозможно сделать множественное наследование, можно сделать обходной путь использовать все методы UserData (как если бы я унаследовал его) по классу Profile, который наследует в то же время от UITabBarController?

Заранее благодарен!

+0

Нет, это невозможно. Кроме того, если вашему классу необходимо наследовать более одного класса, существует огромный шанс, что ваш дизайн испорчен. – ozgur

+0

Можете ли вы рассказать нам, что именно вы пытаетесь достичь (с точки зрения функциональности/пользовательского интерфейса)? Я почти сомневаюсь, что вам когда-нибудь понадобится класс, который наследует от 'UIViewController' и' UITabBarController' ... – jcaron

+0

@jcaron Мне нужно, чтобы в 'UITabBarController' было личным меню, которое создается на' UserData' , –

ответ

0

Вам необходимо использовать Protocol and delegates - apple doc. Как вы сказали, что вы пробовали протокол, вы, должно быть, ошиблись в реализации. В противном случае это может обрабатываться протоколом и делегатами.

Обратитесь к документации по яблоку, как я рассказал в предыдущем абзаце.

Класс profile должен быть делегатом вашего класса userdata. и затем он может получить доступ к своим методам.

Вы также обращаетесь к Quick Guide to Swift Delegates!