struct IconoLista: View {
// MARK: Variables generales
@State var listaElegida : Listas = Listas()
var body: some View {
VStack {
NavigationLink("",destination: ProductosEnLista(listaElegida: self.listaElegida), tag: "ProductosEnLista", selection: $selectionLista)
Button(action: {self.listaElegida = datosLista;self.selectionLista = "ProductosEnLista"})
{
Image("personal")
.resizable()
.frame(alignment: .center)
}
Text("Elegido")
.frame(alignment: .center)
.foregroundColor(.black)
.font(Font.system(size: 10.0, weight: .bold, design: .default))
}
.frame(width: 72, height: 100, alignment: .center)
}
}
struct ProductosEnLista : View {
var listaElegida : Listas
@State var contenido : Array<Contenido> = Contenido().datos(idLista : listaElegida.id)
}
这条线是我的问题,因为正常情况下,直到我进入视图的主体(var body:一些视图),我没有可用的 listaElegida 的值。
@State var contenido : Array<Contenido> = Contenido().datos(idLista : listaElegida.id)
我已经尝试了我读过的所有内容,在第二个视图中做 listaElegida 作为@Binding,我尝试在 var 体内分配值:一些视图 都是错误
在
ProductosEnLista
中,您不能在listaElegida
之前使用ProductosEnLista
已完全初始化。这意味着,您不能在声明中使用listaElegida
@State var contenido : Array<Contenido> = Contenido().datos(idLista : listaElegida.id)
.
要“解决”这个问题,您可以创建自己的
init(...)
(如评论中所述),确保listaElegida
在你使用它来构建你的contenido
.之前被初始化
struct ProductosEnLista: View {
var listaElegida: Listas
@State var contenido: [Contenido]
init(listaElegida: Listas) {
self.listaElegida = listaElegida
_contenido = State(initialValue: Contenido().datos(idLista: listaElegida.id))
}
var body: some View {
Text("all good now")
}
}