gpt4 book ai didi

ios - 使用 SwiftUI 从 Wireframe 创建一个新的 VIPER 模块

转载 作者:行者123 更新时间:2023-11-28 23:22:19 25 4
gpt4 key购买 nike

我正在尝试使用 SwiftUI 实现 VIPER。首先,我从 Wireframe 返回一个 UIKit VC(UIHostingController(rootView)),直到我意识到在导航中,当演示者告诉 Wireframe 呈现一个 SwiftUI View 时,我可以不要通过 NavigationLink 传递 UIViewController

遇到这个问题,我尝试制作 Wireframe 协议(protocol)以返回 SwiftUI View,但似乎不可能

Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements

final class HomeWireFrame: HomeWireFrameProtocol {
//Error here returning a View
class func createHomeModule() -> View {

var view = HomeView()
//set up VIPER modules...
.
.

return view

我如何定义一个将返回 SwiftUI View 的函数?

最佳答案

您的 Presenter 类应该有一个 View 实现的协议(protocol)变量。因此,假设您的 Presenter谁实现了 ModuleInputModuleOutput协议(protocol)有 2 个变量用于 ViewInput Protocol 类型的 View 一个用于 router类型 RouterInput Protocol .

所以你的路由器Input类和Router应该是这样的

 protocol RouterInput {
func routeToAnotherView(from view: ViewInput)
}

class Router: RouterInput {
func routeToAnotherView(from view: ViewInput){
guard let viewInMyType = view as? MyType else {
return
}
// Now you can go to your view
}
}

然后从演示者那里,您将使用参数您的 View 调用该函数协议(protocol)导出。

关于ios - 使用 SwiftUI 从 Wireframe 创建一个新的 VIPER 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59452370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com