假设我有一个应用
var storeVM = BookStoreViewModel(bla1: bla1, bla2: bla2, bla3: bla3)
@SceneBuilder var body: some Scene {
WindowGroup {
BookStoreView( model: storeVM )
}
#if os(macOS)
Settings {
SettingsView(model: config)
}
#endif
}
BookStore具有一个网格,其中许多书籍保存在某个数据库中。可以通过以下方式启动BookView:
BookView(model: bookViewModel)
目标:在新的单独窗口中打开BookView(例如,通过单击按钮)。我怎样才能做到这一点?奖励问题:
如何从代码中打开
SettingsView(model: config)
?PS:
NavigationLink
对我来说不是解决方案,因为我没有使用NavigationView
。 最佳答案
尝试类似以下的操作(只是想法-无法测试)
class BookViewModel: ObservableObject {}
class AppState: ObservableObject {
@Published var selectedBook: BookViewModel?
}
@main
struct SwiftUI2_MacApp: App {
@StateObject var appState = AppState()
@SceneBuilder
var body: some Scene {
WindowGroup { // main scene
ContentView()
.environmentObject(appState) // inject to update
// selected book
}
WindowGroup("Book Viewer") { // other scene
if appState.selectedBook != nil {
Book(model: appState.selectedBook)
}
}
}
}