我試圖在同級視圖之間傳遞一些資料。
我有一個帶有按鈕的VerseDetailView:
@StateObject var favoritesViewModel = FavoritesViewModel()
...
Button("Add to favorite"/span>) {
favoritesViewModel.add(verse: verse)
}
我的FavoritesViewModel看起來是這樣的:
class FavoritesViewModel。ObservableObject {
@Published var favoriteVerses: [Verse] = [] 。
func add(verse: Verse) {
favoriteVerses.append(verse)
}
}
我如何傳遞favoriteVerses以在一個完全不同的子視圖中顯示?
我的主應用程式檔案看起來像這樣:
var body: some Scene {
WindowGroup {
TabView {
NavigationView {
BookView() // VerseDetailView是這個視圖的一個孩子。
}
.tabItem {
Image(systemName: "book"/span>)
Text("Books")
}
NavigationView {
FavoritesView() // I want to get the array of favoriteVerses here
}
.tabItem {
Image(systemName: "bookmark"/span>)
Text("Favorites")
}
}
}
}
我的FavoritesView是這樣的:
struct FavoritesView: View {
@EnvironmentObject var favoritesViewModel: FavoritesViewModel var favoritesViewModel.
//span>這是否正確?
//I get a hread 1: "Fatal error: 沒有找到FavoritesViewModel型別的ObservableObject "的錯誤。
var body。some View {
List {
Section(header: Text("Favorite verses")) {
ForEach(favoritesViewModel.favoriteVerses) { verse in
Text(verse.verse)
}
}
}
}
}
我試著在主應用程式檔案的頂部添加了這個內容:
var favoritesViewModel = FavoritesViewModel()
...
NavigationView {
FavoritesView().environmentObject(favoritesViewModel)
}
但是這也不行啊
uj5u.com熱心網友回復:為普通的頂部視圖(在你的例子中是TabView)添加它,比如
TabView {
NavigationView {
BookView() // VerseDetailView是這個視圖的一個孩子。
}
.tabItem {
Image(systemName: "book"/span>)
Text("Books")
}
NavigationView {
FavoritesView() // I want to get the array of favoriteVerses here
}
.tabItem {
Image(systemName: "bookmark"/span>)
Text("Favorites")
}
}
.environmentObject(favoritesViewModel) // << here !
uj5u.com熱心網友回復:
你可以像這樣把environmentObject傳遞給每個視圖:
TabView {
NavigationView {
BookView() // VerseDetailView是這個視圖的一個孩子。
}
.tabItem {
Image(systemName: "book"/span>)
Text("Books")
}
.environmentObject(favoritesViewModel)
NavigationView {
FavoritesView() // I want to get the array of favoriteVerses here
}
.tabItem {
Image(systemName: "bookmark"/span>)
Text("Favorites")
}
.environmentObject(favoritesViewModel)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/334310.html
標籤:
上一篇:了解Blazor中的重寫引數問題
下一篇:用“#”替換字母并反轉
