【发布时间】:2021-02-08 17:19:40
【问题描述】:
所以我在这里遇到了一些问题,我希望很容易解决,只是目前无法解决。我正在通过一些CoreData信息(帖子)循环并返回图像网格,我希望能够单击这些图像并打开DetailView的fullScreenCover,其中包含正确的信息。使用当前代码,DetailView 始终显示第一篇文章中的数据。如果我将它从 Button 更改为 NavigationLink NavigationLink(destination: DetailView(post: post)),正如代码中注释的那样,它可以完美运行,但不会给我想要的 fullScreenCover 行为。我在这里做错了什么?提前致谢!
@FetchRequest(entity: Post.entity(), sortDescriptors: []) var posts: FetchedResults<Post>
enum ActiveSheet: Identifiable {
case detail, addNew
var id: Int {
hashValue
}
}
@State var activeSheet: ActiveSheet?
var body: some View {
ForEach(posts.reversed(), id: \.self) { post in
VStack {
Button(action: { activeSheet = .detail }){
//NavigationLink(destination: DetailView(post: post)){
ZStack {
Image(uiImage: UIImage(data: post.mainImage ?? self.image)!)
VStack {
Text("\(post.title)")
Text("\(post.desc)")
}
}
}
.fullScreenCover(item: $activeSheet) { item in
switch item {
case .detail:
DetailView(post: post)
case .addNew:
AddNewView()
}
}
}
}
}
【问题讨论】:
-
最好避免在 .sheet 和 .fullScreenCover 闭包中使用任何条件逻辑。这里的解决方案:stackoverflow.com/questions/65416673/…