首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表中选择每一项时,SwiftUI都会显示它自己的detailView

在列表中选择每一项时,SwiftUI都会显示它自己的detailView
EN

Stack Overflow用户
提问于 2021-07-26 09:08:45
回答 1查看 76关注 0票数 0

我正在尝试使用SwiftUI让每个项目在列表中显示它自己的detailView。但现在,我被卡住了,因为它只为任何项目显示相同的detailView。有人知道该怎么做吗?这是我现在拥有的代码:

代码语言:javascript
复制
 struct PastryListView: View {
@State private var isShowingDetailView = false

@State private var selectedPastry : Pastry?

@State private var selection: Int? = nil
var body: some View {
    ZStack {
    NavigationView {
        
        List(MockData.pastries) { Pastry in
            HStack {
                Image(Pastry.image)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 180, height: 200)
                VStack {
                    Text(Pastry.name)
                        .font(Font.custom("DancingScript-Regular", size: 30))
                        .fontWeight(.medium)
                       
                }
                .padding(.leading)
            }
        
            .onTapGesture {
                selectedPastry = Pastry
                isShowingDetailView = true
            
            }
           
          
           
                    
        }
        .navigationTitle("? Pastries")
    }
        
        if isShowingDetailView {                Pastry2DetailView(isShowingDetailView2: $isShowingDetailView, pastry: MockData.samplePastry2)


        }
      
    }
}  }
EN

回答 1

Stack Overflow用户

发布于 2021-07-26 09:41:58

有很多方法可以实现你想要的,这只是一种方法:

代码语言:javascript
复制
import SwiftUI

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            PastryListView()
        }
    }
}

struct Pastry: Identifiable {
   var id: String = UUID().uuidString
   var name: String
   var image: UIImage
}

struct PastryListView: View {
    @State private var pastries: [Pastry] = [
        Pastry(name: "pastry1", image: UIImage(systemName: "globe")!),
        Pastry(name: "pastry2", image: UIImage(systemName: "info")!)]
    
    var body: some View {
        NavigationView {
            List(pastries) { pastry in
                NavigationLink(destination: PastryDetailView(pastry: pastry)) {
                    HStack {
                        Image(uiImage: pastry.image)
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                            .frame(width: 80, height: 80)
                        VStack {
                            Text(pastry.name)
                                .font(Font.custom("DancingScript-Regular", size: 30))
                                .fontWeight(.medium)
                        }
                        .padding(.leading)
                    }
                }
            }.navigationTitle("? Pastries")
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

struct PastryDetailView: View {
    @State var pastry: Pastry
    var body: some View {
        Text("???? " + pastry.name + " ????")
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68523564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档