如何使现有的类成员成为协议实现?

时间:2018-03-21 08:55:24

标签: ios swift inheritance swift-protocols

我的问题很简单。我有一个类来管理我的viewcontroller到viewcontroller过渡动画,它从一个协议中获取类,因为我想让它可移植,我通常会创建一个带有项目特定内容的baseviewcontroller。

协议是这样的:

protocol AnimatedViewController {
    var view: UIView { get set }
    func animateViews()
}

但是当我让UIViewController继承此内容时,我会收到view未定义的错误。当我定义它时,它告诉我它已经定义了。

如何在我的协议中定义view并将其view定义为UIViewController

PS:不知道如何命名标题,欢迎编辑。

2 个答案:

答案 0 :(得分:3)

您可以在协议中使用where子句,但不需要class MyController: UIViewController, AnimatedViewController { func animateViews() { // do your stuff } } 属性。

view

答案 1 :(得分:1)

view中的{p> UIViewController是一个展开UIView的力量,所以只需将协议定义为:

protocol AnimatedViewController {
    var view: UIView! { get set }
    func animateViews()
}

来自view的{​​{1}}将用于满足此协议的要求。

E.g:

UIViewController