UIViewController 在 Swift 中的“Coordinator”模式中的多个协调器中?

问题描述 投票:0回答:1

我读过有关

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)?

swift uiviewcontroller coordinator-pattern
1个回答
0
投票

您可以定义一个结合这两者的接口。或者简单地为它们创建一个类型别名。

protocol CombineCoordinatorProtocol: CoordinatorProtocol, CoordinatorProtocol2 { }

//OR

typealias CombineCoordinator = CoordinatorProtocol & CoordinatorProtocol2

然后你就可以像平常一样将其注入

SomeViewController

class SomeController {
    //Both are fine
    weak var coordinator: CombineCoordinator?
    weak var coordinator2: CombineCoordinatorProtocol?
}
© www.soinside.com 2019 - 2024. All rights reserved.