如何在同級視圖之間傳遞環境對象?

我試圖在兄弟視圖之間傳遞一些數據。

我有一個帶按鈕的VerseDetailView

@StateObject var favoritesViewModel = FavoritesViewModel()
...
Button("Add to favorite") {
 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 is a child of this view
                }
                .tabItem {
                    Image(systemName: "book")
                    Text("Books")
                       
                }
                NavigationView {
                    FavoritesView() // I want to get the array of favoriteVerses here
                }
                
                .tabItem {
                    Image(systemName: "bookmark")
                    Text("Favorites")
                }
            }
        }
    }

我的FavoritesView看起來像這樣:

struct FavoritesView: View {
    @EnvironmentObject var favoritesViewModel: FavoritesViewModel 
     // is this correct?
    // I get a hread 1: "Fatal error: No ObservableObject of type FavoritesViewModel found" error
    
    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)
}

但這也不起作用

? 最佳回答:

為公共俯視圖添加它(在您的例子中是TabView),如

TabView {
    NavigationView {
        BookView() // VerseDetailView is a child of this view
    }
    .tabItem {
        Image(systemName: "book")
        Text("Books")
           
    }
    NavigationView {
        FavoritesView() // I want to get the array of favoriteVerses here
    }
    
    .tabItem {
        Image(systemName: "bookmark")
        Text("Favorites")
    }
}
.environmentObject(favoritesViewModel)   // << here !!
主站蜘蛛池模板: 一区二区免费国产在线观看| 国产精品无圣光一区二区| 一区二区三区免费视频观看| 久久久久人妻一区二区三区| 好湿好大硬得深一点动态图91精品福利一区二区 | 久久精品国产亚洲一区二区三区 | 国产伦精品一区二区三区视频金莲 | 91午夜精品亚洲一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品国产一区| 国产一区二区在线观看视频| 国产香蕉一区二区精品视频| 无码乱人伦一区二区亚洲一| 国产午夜福利精品一区二区三区| 人妻无码一区二区三区四区| 精品在线一区二区| 日本精品一区二区在线播放| 精品少妇人妻AV一区二区| 亚洲性无码一区二区三区| 日韩一区二区视频| 亚洲AV成人一区二区三区观看| 无码av人妻一区二区三区四区| 亚洲Av无码一区二区二三区 | 日本一区二区高清不卡| 精品国产福利在线观看一区 | 国产免费私拍一区二区三区| 成人精品一区二区激情| 天海翼一区二区三区高清视频| 无码中文人妻在线一区| 精品国产一区二区三区久| 国产精品亚洲综合一区在线观看| 国产免费私拍一区二区三区| 福利片福利一区二区三区| 国产成人无码精品一区在线观看| 国产福利电影一区二区三区久久老子无码午夜伦不 | 一区二区三区在线播放| 国产一区在线视频| 熟女精品视频一区二区三区| 精品无码一区二区三区在线| 欧美一区内射最近更新| 免费在线视频一区|