Я пытаюсь создать представление коллекции в SwiftUI. Я могу создать сетку (в данном случае изображений), но я не нашел способа щелкнуть изображение и перейти к другому виду - ни модальному, ни полному виду. Я храню изображения в CoreData и использую метод от Пола Хадсона, чтобы разбить изображения на строки:
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)