swiftUI — проблема перехода от представления «Список» к представлению «Подробности» с использованием основных данных
возникли проблемы с навигацией. Ссылка на подробное представление. Пробовал два варианта. Вариант 1, NavigationLink открывается для FileDetails, но пустой, без файловых данных:
struct FileList: View {
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: FileEnt.entity(), sortDescriptors: [NSSortDescriptor(key: "fileName", ascending: false)]) var results: FetchedResults<FileEnt>
@StateObject var fileData = FileViewModel()
var body: some View {
NavigationView {
List {
ForEach(results) { aFile in
NavigationLink(destination: FileDetails(fileData: fileData)) {
VStack {
Text(aFile.fileName ?? "")
}
}
}
}.navigationBarTitle("Files")
}
}
}
Вариант 2, используя onTapGesture. Он работает при нажатии на текст списка или стрелку, но при нажатии на свободное пространство между именем файла и стрелкой он переходит к подробному представлению, какие данные просматривались в последний раз:
...
@State var isSegue = false
var body: some View {
NavigationView {
List {
ForEach(results) { aFile in
NavigationLink(destination: FileDetails(fileData: fileData), isActive: $isSegue, label: {
VStack {
Text(aFile.fileName ?? "")
}
})
.onTapGesture {
fileData.DetailItem(fileItem: aFile)
isSegue.toggle()
}
}
}.navigationBarTitle("Files")
}
}
}
Вот упрощенная ViewModel:
import Foundation
import CoreData
import UIKit
class FileViewModel: ObservableObject {
@Published var fileName = ""
init(){
}
func DetailItem(fileItem: FileEnt){
fileName = fileItem.fileName ?? ""
}
Я добавлю больше кодов, если это необходимо. Спасибо за совет!