对 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)
}
}
}
这是我的交互虚拟机文件,以防相关。
import Foundation
@Observable
class InteractionViewModel {
var interactions: [Interaction] = [Interaction(interactionName: "Example", id: UUID())]
var presentInteractionMenu: Bool = true
var presentInteractionDetails: Bool = false
}
非常感谢任何帮助或替代解决方案!我只需要能够从其他视图修改 Bool 值。
我尝试过的事情:
检查并重新检查拼写错误、清理构建文件夹并重新启动 Xcode、重新启动 Mac、从项目文件中删除 DerivedData