NavigationLink 不链接到 Swift iOS 中的视图

问题描述 投票:0回答:1

当使用 foreach 和 NavigationLink 时,NavigationLink 不会链接到视图。有什么办法可以让它正常工作。

导航视图(){ ZStack(){ 颜色(.systemGray6).ignoresSafeArea()

            VStack()
            {
                ScrollView(.horizontal, showsIndicators: false)
                {
                    HStack()
                    {
                        ForEach(MockData.items)
                        { item in
                            
                            ZStack
                            {
                                Button(action:{ })
                                {
                                    
                                    NavigationLink( destination: selectedView(name: item.name))
                                    {EmptyView()}
                                    
                                    RoundedRectangle(cornerRadius: 10)
                                        .foregroundStyle(item.color.self)
                                        .frame(width: 70, height: 70)
                                }
                                
                                
                                
                                Image(systemName: item.image)
                                    .foregroundColor(.white)
                                    .font(.system(size: 30))
                                    .padding(25)
                            }
                            
                            
                        }
                        
                    }//scrollview
                    
                    //opciones
                }//cierre del VStack
                
                .padding(.top, 20)
                .padding(.leading)
                Spacer()
                
            }//cierre Zstack
            
        } //cierre de Zstack
        .navigationTitle("Caracteristicas")
        
        .toolbar{
            ToolbarItem(placement: .navigationBarLeading)
            {
                Button(action:{},
                       label: {
                    
                    Image(systemName: "switch.2")})
                
            }
            
            ToolbarItem(placement: .navigationBarTrailing)
            {
                Button(action:{},
                       label: {Image(systemName: "person.circle")})
            }
            
        }//toolBar
        
        .accentColor(.red)
        
    }
}

}

结构项:可识别、可哈希{

    var id = UUID()
    var name: String
    var color: Color
    var image: String
               
    }

@ViewBuilder private func selectedView (name: String) -> some View {

        switch name {
            
        case "Medical": MedicalView()
        case "Illness": IllnessView()
        case "Vaccune": VaccuneView()
        case "Dewor":  DeworView()
        case "Allergie": AllergieView()
            
        default: EmptyView()
            
            
        }
    }

结构模拟数据{ static var items = [Item(name: "Medical" ,color: .red, image:"heart"), 项目(名称:“疾病”,颜色:.blue,图像:“药丸”), 项目(名称:“疫苗”,颜色:.橙色,图像:“注射器”), 项目(名称:“Dewor”,颜色:.green,图像:“微生物”), 项目(名称:“过敏”,颜色:.紫色,图片:“过敏原”)]

}

ios swiftui
1个回答
0
投票

您将

EmptyView()
作为
NavigationLink
的目的地,因此
NavigationStack
不知道要导航到哪里,因为您提供的作为目的地的视图是空的。

解决方案如下:

NavigationLink {
    selectedView(name: item.name)
} label: {
    ZStack {
        RoundedRectangle(cornerRadius: 10)
            .foregroundStyle(item.color.self)
            .frame(width: 70, height: 70)
        Image(systemName: item.image)
            .foregroundColor(.white)
            .font(.system(size: 30))
            .padding(25)
    }
}

第一个闭包提供了

NavigationLink
的目的地,第二个闭包提供了呈现为可点击链接的视图

© www.soinside.com 2019 - 2024. All rights reserved.