Ios 将数据传递到上一个viewcontroller VIPER
我在iOS swift中使用VIPER架构。我有两个视图控制器,比如说Ios 将数据传递到上一个viewcontroller VIPER,ios,swift,popviewcontroller,viper,Ios,Swift,Popviewcontroller,Viper,我在iOS swift中使用VIPER架构。我有两个视图控制器,比如说A和B。首先,我从A到B,执行一些任务,然后从B到A。使用MVC或MVVM,我们可以创建协议并将数据从B传输到A。但对于毒蛇,我感到困惑。这是我的毒蛇代码B,点击后退按钮: 视图: 演示者: func goBack() { router.back() } 路由器: func back() { viewController?.navigationController?.popViewController(ani
A
和B
。首先,我从A
到B
,执行一些任务,然后从B
到A
。使用MVC或MVVM,我们可以创建协议并将数据从B
传输到A
。但对于毒蛇,我感到困惑。这是我的毒蛇代码B,点击后退按钮:
视图:
演示者:
func goBack() {
router.back()
}
路由器:
func back() {
viewController?.navigationController?.popViewController(animated: true)
//here I want to send data back to previous viewcontroller
}
我曾尝试在先前控制器的路由器中创建一个方法,并通过该方法发送数据,但它不起作用,因为路由器没有任何presenter实例或任何其他实例,除了view。注:-在Viper中,路由器是单向的。 所以这可能对你有帮助
func back() {
viewController?.navigationController?.popViewController(animated: true)
//here I want to send data back to previous viewcontroller
}
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)
}
}
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()
}
}