首页 > 解决方案 > 初始化器 SwiftUI 中的变量

问题描述

我有这个代码:

import SwiftUI
import QGrid

struct VerCanales: View {
    
    var categoria:String
    @ObservedObject var canales = CargarCanales(categoriaID: categoria)
    
    var body: some View {
        NavigationView{
            QGrid(self.canales.listaCanales, columns: 3){item in
                NavigationLink(destination:VlcPlayerDemo()){
                    Text(item.name).frame(width:400, height:50)
                }
            }
            
        }.navigationBarTitle(Text("CHANNELS AVAILABLE"))
    }
}

变量“categoria”来自上一个视图作为参数,我需要将它作为参数传递给@ObservedObject,但我有以下错误:“不能在属性初始化程序中使用实例成员'categoria';属性初始化程序在'之前运行'自我'可用"

我是 Swift 语言的新手,我已经搜索过但找不到好的解决方案

标签: swiftswiftuiswiftui-navigationlink

解决方案


您需要在 VerCanales 视图 init 中初始化 canales 变量。

struct VerCanales: View {
    
    private var categoria: String
    @ObservedObject var canales: CargarCanales
    
    init(categoria: String, canales: CargarCanales) {
        self.categoria = categoria
        self.canales = canales
    }
    
    var body: some View {
        NavigationView{
            QGrid(self.canales.listaCanales, columns: 3){item in
                NavigationLink(destination:VlcPlayerDemo()){
                    Text(item.name).frame(width:400, height:50)
                }
            }
            
        }.navigationBarTitle(Text("CHANNELS AVAILABLE"))
    }
}

推荐阅读