我正在尝试在SwiftUI中创建一个集合视图。我可以创建网格(包含 这种情况),但我还没有找到一种方法来点击图片并过渡到其他视图- 既不是模态视图也不是全视图。我将图像存储在CoreData中,并且正在使用 Paul Hudson提出的将图像分成几行的方法:
https://www.hackingwithswift.com/example-code/language/how-to-split-an-array-into-chunks
此代码确实允许转换,但是只需单击一下即可在HStack中的每个图像之间循环 即使每张照片都有自己的NavigationLink包装器。
我还尝试了一个版本,其中我通过按钮制作了网格并将图像放入 按钮。更糟的是-详细内容不正确,Xcode抱怨 可能是这样的:“警告:尝试在已经显示(空)的<< / em >>上显示<< em >>。” 我还尝试将.onTapGesture {}添加到每个图像。与按钮类似的故障。
struct ChunkedContentView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: DermPhoto.getAllDermPhotos()) var dermPhotos: FetchedResults<DermPhoto>
//@State private var columnCount = 3//hard coded to 3 at the moment
@State private var showDetailView = false
var body: some View {
let chunkThis = DermPhoto.chunkTheDermPhotos()
return GeometryReader { geo in
NavigationView {
List {
ForEach(0 ..< chunkThis.count) { index in
HStack {
ForEach(chunkThis[index]) { p in
NavigationLink(destination: DetailView(passedDerm: p)) {
Image(uiImage: UIImage(data: p.myImage!)!)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: ((geo.size.width / 3) - 15), height: ((geo.size.width / 3) - 15))
.border(Color.black)
.clipped()
//comment out NavigationLink and this does not work either
//.onTapGesture {
//self.showDetailView.toggle()
//}
//.sheet(isPresented: self.$showDetailView) {
//DetailView(passedDerm: p)
//}
//either above or nav link
}//nav link
}
}
}
}
.navigationBarTitle("Time Series")
}//nav
}//geo
}
}
第二个问题是,有没有一种方法可以禁止显示 NavigationLink?
任何指导将不胜感激。 Xcode 11.3(11C29)
答案 0 :(得分:0)
@Asperi应该得到荣誉-使用ScrollView
而不是List
。这也删除了披露指标。如果您使用图片,则需要向{strong> NavigationLink 中添加.buttonStyle(PlainButtonStyle())
。如果使用系统图标,则可能不需要该步骤。