对于SwiftUI来说,这是一个相当新的东西,所以这可能只是我缺少的一些简单的东西。
收到此错误:“在我试图展示工作表的范围中找不到'$interactionVM'”。
只有当我使用.sheet时才会发生这种情况,如果我用Text(String(…))替换工作表,我可以访问interactionVM的值而不会出错。
import SwiftUI
struct HomeView: View {
var interactionVM: InteractionViewModel
var body: some View {
NavigationStack {
VStack {
VStack {
HomeViewCard()
}
.sheet(isPresented: $interactionVM.presentInteractionMenu) {
InteractionMenuView(interactionVM: interactionVM)
.presentationDetents([.fraction(0.2), .fraction(0.3), .fraction(0.4), .fraction(0.5), .fraction(0.6), .fraction(0.7), .fraction(0.8), .fraction(0.9)])
.interactiveDismissDisabled()
.presentationBackgroundInteraction(.enabled)
}
.toolbar {
ToolbarItem {
Menu {
NavigationLink {
EmptyView()
} label: {
Text("Option 1")
}
} label: {
Image(systemName: "ellipsis")
}
}
}
}
}
}
}
#Preview {
HomeView(interactionVM: InteractionViewModel())
}
interactionVM在根文件中初始化,然后传递给HomeView:
import SwiftUI
@main
struct theBlackBookApp: App {
let interactionVM = InteractionViewModel()
var body: some Scene {
WindowGroup {
HomeView(interactionVM: interactionVM)
}
}
}
这也是我的interactionVM文件,以防它相关。
import Foundation
@Observable
class InteractionViewModel {
var interactions: [Interaction] = [Interaction(interactionName: "Example", id: UUID())]
var presentInteractionMenu: Bool = true
var presentInteractionDetails: Bool = false
}
非常感谢任何帮助或替代解决方案!我只需要能够从其他视图修改布尔值。
我尝试过的事情:
检查和复查打字错误,
正在清理生成文件夹并重新启动Xcode,
重新启动Mac,
从项目文件中删除衍生数据