Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化器SwiftUI中的变量_Swift_Swiftui_Swiftui Navigationlink - Fatal编程技术网

初始化器SwiftUI中的变量

初始化器SwiftUI中的变量,swift,swiftui,swiftui-navigationlink,Swift,Swiftui,Swiftui Navigationlink,我有以下代码: import SwiftUI import QGrid struct VerCanales: View { var categoria:String @ObservedObject var canales = CargarCanales(categoriaID: categoria) var body: some View { NavigationView{ QGrid(self.canales

我有以下代码:

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”;属性初始值设定项在“self”可用之前运行”


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

您需要在VerCanales view 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"))
    }
}

感谢您的帮助,但是现在,在前面的视图中,我应该发送哪个变量<代码>导航链接(目的地:VerCanales(categia:item.categoryID,canales:HERE)){Text(item.categoryName).frame(宽:400,高:50)为此,将变量canales设置为private,并从init参数中删除canales。``@ObservedObject private var canales:CargarCanales init(categia:String){self.categoria=categoria self.canales=CargarCanales(categoriaID:categoria)}```