我读过有关
Coordinator
模式的内容,在所有情况下,它的描述如下:
class SomeViewController: UIViewController {
weak var coordinator: CoordinatorProtocol?
}
protocol CoordinatorProtocol: AnyObject { }
class Coordinator: CoordinatorProtocol {
var navigationController: UINavigationController
func showSomeViewController() {
navigationController.push(SomeViewController(), animated: true)
}
}
但是如果我需要添加独立于
Coordinator2
但可以创建和使用CoordinatorProtocol2
的Coordinator
(SomeViewController
)怎么办?换句话说,如何使用 2 个或更多协调器来制作 SomeViewController
?
在视图控制器中添加
weak var coordinator: CoordinatorProtocol2?
?替换为weak var coordinator: (CoordinatorProtocol1 & CoordinatorProtocol2)?
?
您可以定义一个结合这两者的接口。或者简单地为它们创建一个类型别名。
protocol CombineCoordinatorProtocol: CoordinatorProtocol, CoordinatorProtocol2 { }
//OR
typealias CombineCoordinator = CoordinatorProtocol & CoordinatorProtocol2
然后你就可以像平常一样将其注入
SomeViewController
class SomeController {
//Both are fine
weak var coordinator: CombineCoordinator?
weak var coordinator2: CombineCoordinatorProtocol?
}