【发布时间】:2021-11-14 20:10:41
【问题描述】:
我正在使用 VIPER 架构构建我的第一个应用程序。我有两个 VC:主要的一个和模态的一个(从主 VC 模态呈现)。我的模态VC中有一个tableView,当用户在那里选择一行时,我需要将它传递给presenter,然后从presenter传递给主VC。我还需要在模态 VC 中保持选定的行突出显示,所以如果我关闭它然后再次显示它,该行仍将突出显示。我很困惑,因为我不知道最好的方法是什么。我尝试将我的模态 VC 包含到配置器中并调用配置器两次:在主 VC 中,然后再次在模态 VC 中。它工作正常。这就是我的配置器的样子:
protocol ObserverConfiguratorProtocol {
func configure(with mainViewController: ObserverViewController, with modalViewController: CurrenciesViewController)
}
class ObserverConfigurator: ObserverConfiguratorProtocol {
func configure(with mainViewController: ObserverViewController, with modalViewController: CurrenciesViewController) {
let presenter = ObserverPresenter(view: mainViewController)
let interactor = ObserverInteractor(presenter: presenter)
let router = ObserverRouter(view: mainViewController)
mainViewController.presenter = presenter
modalViewController.presenter = presenter
presenter.interactor = interactor
presenter.router = router
presenter.view = mainViewController
presenter.modalView = modalViewController
}
}
主 VC 中的 viewDidLoad():
override func viewDidLoad() {
configurator.configure(with: self, view: CurrenciesViewController())
}
模态VC中的viewDidLoad():
override func viewDidLoad() {
configurator.configure(with: ObserverViewController(), view: self)
}
无论如何,我不确定它是否符合 VIPER 原则。是吗,还是有更好的解决方案?任何帮助表示赞赏!
【问题讨论】:
标签: ios swift architecture viper-architecture