我有这样的看法:

struct CreateAccountBut至n : View {
    
    @Binding var viewRouter: ViewRouter

    var body: some View{
        But至n(action: {
            withAnimation {
                viewRouter.currentPage = .register
            }
            
        }) {
            
            Text("create_account")
                .padding(.vertical)
                .frame(maxWidth: .infinity)
                .foregroundColor(Color("ColorText"))
                .overlay(
                    RoundedRectangle(cornerRadius: 5)
                        .stroke(Color.white, lineWidth: 0))
                
        }
        .background(Color("BtnGreenBG"))
        .frame(minWidth: 0, maxWidth: .infinity)
        .cornerRadius(5)
        .padding(.至p, 12)
    }
}

并且我需要传递我在主视图中创建的viewRouter:

@StateObject var viewRouter: ViewRouter

我试过:

CreateAccountBut至n(viewRouter: $viewRouter)

并获得:

Cannot convert value of type 'ObservedObject<ViewRouter>.Wrapper' 至 expected argument type 'Binding<ViewRouter>'

我是iOS/swftui的新手,不理解这个错误.

根据以下答案:

How we can convert value of type ObservedObject 至 Binding in SwiftUI?

我变了

@Binding var viewRouter: ViewRouter

@ObservedObject var viewRouter: ViewRouter

inside CreateAccountBut至n and it's still not working

SwiftUI/Swift is an unintuitive nightmare compared 至 Kotlin :(

请帮忙

推荐答案

ObservableObject是一个引用类型,所以我们可以直接通过引用传递它,不需要绑定.

struct CreateAccountButton : View {
    
    let viewRouter: ViewRouter     // << regular property

// if needed to observe it internally, ie. body (not closures) 
// contains router's property usage

//  @ObservedObject var viewRouter: ViewRouter


// ...

并拨打

CreateAccountButton(viewRouter: viewRouter) // inject reference

Swift相关问答推荐

SWIFT并发:合并Taskgroup和AsyncStream?

如何为任务扩展的泛型静态函数获得自动类型推理

从后台线程获取@发布属性的值(不更改它)是正确的吗?

在MacOS上检测键盘是否有Globe键

如何使泡泡上的箭头直达封闭矩形

如何才能在同一线程上调用类中的每个方法,而不对每个调用使用同步块?

UIBezierPath() 和 DragGesture:连接点创建角而不是曲线

在 init(from decoder: Decoder) 方法中访问原始 JSON 数据

为什么 String.contains 在我导入 Foundation 时表现不同?

如何在一个视图控制器中创建具有相同行为的多个集合视图?

如何以快速 Select 器菜单样式调整图像大小

获取 SwiftUI 中 Binding 的值更改更新

找不到目标AAA的 SPM 工件 - 仅限 Xcode 13.3

iOS 判断应用程序是否可以访问麦克风

'#selector' 的参数不引用 '@objc' 方法、属性或初始化程序

如何在 Swift 中将对象归零

如何交换快速数组中的元素?

Swift 的 JSONDecoder 在 JSON 字符串中有多种日期格式?

如何使用 Swift 枚举作为字典键? (符合 Equatable)

在文本中添加无限行(SwiftUI)