【发布时间】:2016-09-12 07:53:33
【问题描述】:
我有一个继承自另一个类的类。
class Profile: UserData{
}
同时UserData 继承自UIViewController。
问题来了,因为我需要Profile 类也继承自UITabBarController,并且我需要从Profile 类访问UserData 类的方法。
我试过的是:
class Profile: UITabBarController{
override func viewDidLoad() {
super.viewDidLoad()
UserData().doStuff()
}
}
但这对我不起作用,因为我需要继承完整的类(该方法仅在我使用 class Profile: UserData 时有效)。
我知道协议,我试图在协议上继承 UserData 类,但它也是不允许的。我也尝试在该协议上复制 UserData 类的方法,但它给了我以下错误:
协议方法可能没有主体
由于目前不可能进行多重继承,是否可以在Profile 继承的类上使用UserData 的所有方法(好像我已经继承了它)同一时间来自UITabBarController?
提前致谢!
【问题讨论】:
-
不,这是不可能的。此外,如果您的类需要继承多个类,那么您的设计很有可能存在缺陷。
-
您能告诉我们您到底想要实现什么(就功能/用户界面而言)?我非常怀疑您是否需要拥有一个继承自
UIViewController和UITabBarController的类... -
@jcaron 我需要
UITabBarController中的个人菜单,它是在UserData上创建的。 -
“在”是什么意思?作为标签?您不需要为此子类化
UITabBarController,您可以创建一个常规的UITabBarController并提供您的自定义UIViewController作为其视图控制器之一。 -
注意:您可能会将类的继承与视图控制器的父子关系混淆。它们完全不相关。
标签: ios swift inheritance multiple-inheritance