Arn*_*nab 6 popviewcontroller ios swift viper-architecture
我在 iOS swift 中使用 VIPER 架构。我有 2 个视图控制器,比如说A
和B
。首先,我将从A
到,执行一些任务,然后从到B
返回。使用 MVC 或 MVVM,我们可以创建协议并从到传输数据。但对于VIPER,我很困惑。这是我的 VIPER 代码 B,点击“后退”按钮时:B
A
B
A
看法:
@IBAction func backButtonTapped(_ sender: UIButton) {
presenter?.goBack()
}
Run Code Online (Sandbox Code Playgroud)
主持人:
func goBack() {
router.back()
}
Run Code Online (Sandbox Code Playgroud)
路由器:
func back() {
viewController?.navigationController?.popViewController(animated: true)
//here I want to send data back to previous viewcontroller
}
Run Code Online (Sandbox Code Playgroud)
我尝试在前一个控制器的路由器中创建一种方法并通过该方法发送数据,但它不起作用,因为路由器没有任何演示者实例或除视图之外的任何其他实例。
注意:- 在 Viper 路由器中是单向的。所以这可能对你有帮助。
模块A
final class VCA: SomeProtocolDelegate {
fund someMethod() {
//Your task Action From Module B
}
}
final class ModuleARouter: WireFrameProtocol {
fund gotoModuleB(withView vc: VCA) {
ModuleBRouter.load(onView: vc)
}
}
Run Code Online (Sandbox Code Playgroud)
模块B
final class ModuleBRouter: WireframeProtocol {
internal weak var delegate: SomeProtocolDelegate?
// Here you can add more argument on load method for delegate
// since in this example i'm send data back ViewController So I didn't create
class func load(onView VC: UIViewController) {
//setup your VIPER protocol and class
if let vCA = VC as? VCA {
router.delegate = vCA
}
}
func backToPreviousModule() {
self.delegate?. someMethod()
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2605 次 |
最近记录: |