我試圖通過創建另一個名為 DetailView 的檔案/視圖來稍微清理我的代碼,當用戶從“ForEach”代碼中單擊它們時,它將顯示每個專案的所有實際值。但是,它給了我一個錯誤:在呼叫中缺少引數“專案”的引數,并將其扔到 DetailViews_Previews 上。為什么以及如何解決這個問題?謝謝。
串列顯示
struct ListView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath:\Item.todaysDate, ascending: false)],animation: .default)
private var items: FetchedResults<Item>
var body: some View {
NavigationView {
List {
ForEach(items) { item in
NavigationLink {
DetailView(item:item).environment(\.managedObjectContext, self.viewContext)
} label: {
VStack {
Text("\(item.hoursSlept, specifier: "%.2f") hrs")
.bold()
.font(.system(size:18))
.padding(.trailing, 50)
}
}
}}}}}
詳細視圖
struct DetailView: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var item: Item
var body: some View {
VStack {
if item.headacheToggle == true {
Image(systemName: "checkmark.circle").imageScale(.large)
.foregroundStyle(.red)
.font(.system(size:15))
}
else {
Image(systemName: "x.circle").imageScale(.large)
.foregroundStyle(.green)
.font(.system(size:15))
}
}
}}
struct DetailView_Previews: PreviewProvider {
static var previews: some View {
DetailView().environment(\.managedObjectContext, ListViewModel.preview.container.viewContext)
}
}
uj5u.com熱心網友回復:
您需要從預覽背景關系中獲取專案,這是一種方法:
struct DetailView_Previews: PreviewProvider {
static var firstItem: Item? {
let context = PersistenceController.preview.container.viewContext
let fetchRequest = Item.fetchRequest()
fetchRequest.fetchLimit = 1
let results = try? context.fetch(fetchRequest)
return results?.first
}
static var previews: some View {
if let item = firstItem {
DetailView(item: item)
}
else {
Text("Item not found")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/516975.html
標籤:IOS迅捷
上一篇:SwiftUI串列中的異步屬性
