Swift - 两个不同 类 的相同协议

Swift - Same protocol for two different classes

我想对两个不同的 class 使用相同的协议。它用于两个 UIStoryboardSegue classes,正常的和展开的 segue。在我的第一个 class GameSegue.swift 中,我已经声明了这个协议

@objc protocol ViewControllerWithBackgroundImage {

    var backgroundImage: UIImageView { set get }

}

我使用此协议访问 ViewControllers 属性 backgroundImage。在第一个 class GameSegue.swift 中,正常的 segue,backgroundImage 动画 10 px 起来。所以在第二个 class GameSegueUnwind.swift 中,我想向后做同样的事情,将背景 10 px 向下移动。但是要访问 backgroundImage 属性 我需要这个协议。因此,不声明另一个协议,而是使用相同的协议会很有用。

知道这怎么可能吗?

在第二个 class 中声明一个新的委托变量

class GameSegueUnwind {
     var secondDelegate: ViewControllerWithBackgroundImage?
}

并且您将能够在任何其他符合协议的 class 中访问该功能。当然,在 conforming class 中记得在 prepare for segue 方法中声明它有委托处理程序

destinatonViewController.secondDelegate = self