【发布时间】:2021-04-29 21:26:32
【问题描述】:
我正在尝试在不同点更新变量(将其从 1 更改为 0,反之亦然)。
我有一个可观察的对象:
class GameSettings: ObservableObject {
@Published var score = 1
@Published var alert = 0
@Published var displayNavButtons = 1
}
一个改变 displayNavButtons 的函数:
func toggleNavButtonsOff(gamesettings: inout GameSettings) {
let gamesettings = gamesettings
gamesettings.displayNavButtons = 0
}
还有一个观点:
struct PageRender: View {
@EnvironmentObject var settings: GameSettings
var body: some View {
if settings.score == 1 {
toggleNavButtonOff(game settings: &settings)
Text ("page 1")
...
}
}
}
我还会有另一个名为 toggleNavButtonOn 的函数,将 displayNavButtons 再次更改为 1。
在代码的其他地方 (...) 有一个 if 语句来选择性地显示一些按钮(NavButtons)并单击这些按钮将“分数”增加或减少 1(这一切都按预期工作)。这个想法是在 displayNavButtons = 1 时显示 NavButtons。但是如果 displayNavButtons = 0,我希望它不会显示按钮。我需要根据某些标准改变 displayNavButtons。
但是,执行上述操作似乎不起作用。在视图中调用函数会出现错误:“类型‘()’不能符合‘视图’;只有结构/枚举/类类型可以符合协议”和“不能将不可变值作为 inout 参数传递:‘设置’是get-only 属性”。
有人知道如何解决这个问题吗?谢谢
【问题讨论】:
-
"类型 '()' 不能符合 'View'" 将
if settings.score == 1 {放在Group中