我试图理解协调模式的工作原理。
下面是我的代码:
import UIKit
import Foundation
class CheckoutCoordinator: Coordinator, ScheduleDelegate {
var childCoordinator: [Coordinator] = [Coordinator]()
var navigationController: UINavigationController
init(nav: UINavigationController) {
self.navigationController = nav
}
func start() {
let ctrl = CheckoutController.initFromStoryboard()
ctrl.coordinator = self
self.navigationController.pushViewController(ctrl, animated: true)
}
func openSchedule() {
let ctrl = ScheduleController.initFromStoryboard()
ctrl.delegate = self
self.navigationController.pushViewController(ScheduleController.initFromStoryboard(), animated: true)
}
func didSelectTimings(date: NSDate, timings: NSString, distance: Double) {
}
}
从CheckoutController
,我转到ScheduleController
,做一些工作调用它的委托方法。委托应该更新CheckoutController
中的一些值并弹出scheduleController
。我找不到任何具体的解释,以及如何“正确”地实现它。
注意,调度控制器没有向前导航,因此没有协调器类。
1条答案
按热度按时间mum43rcc1#
我不会在协调器中处理委托逻辑,而是将它直接移到
CheckoutController
中,所以当调用ScheduleController
时,它会像这样查看协调器:在
CheckoutController
中,遵循ScheduleDelegate
委托:然后在
ScheduleController
中调用delegate方法后,调用协调器弹出self(在这种情况下为ScheduleController
)。弹出逻辑可以只在viewController中,但我喜欢只在Coordinator中进行导航。在
CheckoutCoordinator
中,或者更好的是在Coordinator
中(因为这个函数非常通用),实现弹出函数。