我有一个视图:
struct CreateAccountButton : View {
@Binding var viewRouter: ViewRouter
var body: some View{
Button(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(.top, 12)
}
}
我需要传递在主视图中创建的viewRouter:
@StateObject var viewRouter: ViewRouter
我尝试过:
CreateAccountButton(viewRouter: $viewRouter)
并获得:
Cannot convert value of type 'ObservedObject<ViewRouter>.Wrapper' to expected argument type 'Binding<ViewRouter>'
我是一个新手,对iOS/SwiftUI不熟悉,不理解这个错误。
根据这个答案:
如何在SwiftUI中将ObservedObject类型的值转换为Binding?
我做出了更改:
@Binding var viewRouter: ViewRouter
为了
@ObservedObject var viewRouter: ViewRouter
在CreateAccountButton中,但它仍然无法正常工作。
与Kotlin相比,SwiftUI/Swift是一场缺乏直觉的噩梦 :(
请帮忙。