稍后使 HStack 中的项目可见/不可见
Making items in HStack visible / invisible later
我有一个带有棋盘的游戏视图,我在 VStack 中有几个部分,最后 2 个 HStack 是一些 'buttons',然后是游戏的一排图块。
VStack(spacing: 5) {
HStack {}
HStack {}
......
......
HStack {
ResetButton {
self.returnLetters()
}
NewLine {
self.newLine()
}
CalcButton {
self.calcButton()
}
StartButton {
self.startButton()
}
}
HStack {
ForEach(0..<7) { number in
Letter(text: self.tray[number], index: number, onChanged: self.letterMoved, onEnded: self.letterDropped)
}
}
这可以很好地设置屏幕但是我最好在游戏后期才显示“开始”和“计算”按钮,或者确实用“开始”和“计算”替换“重置”和“换行”按钮。
看起来
理想情况下我会在游戏后期拥有
最后一次改成这个
有没有办法不显示堆栈中的项目或稍后将项目添加到堆栈?
谢谢
这里有一个模式,引入相应的@State 变量和期望的初始状态值。稍后可以随时在视图中的某个位置更改状态,并且视图将自动更新并显示有条件依赖的按钮:
@State private var newLineVisible = false // initially invisible
...
var body: some View {
...
HStack {
ResetButton {
self.returnLetters()
}
if self.newLineVisible { // << include conditionally
NewLine {
self.newLine()
}
}
CalcButton {
self.calcButton()
}
使用@State 布尔变量来定义按钮是否应该显示,当您更改它们的值时,视图将被刷新。
@State var isResetVisible = true
...
if isResetVisible {
ResetButton {
self.returnLetters()
}
}
然后你在某处设置为false,它就会隐藏
我有一个带有棋盘的游戏视图,我在 VStack 中有几个部分,最后 2 个 HStack 是一些 'buttons',然后是游戏的一排图块。
VStack(spacing: 5) {
HStack {}
HStack {}
......
......
HStack {
ResetButton {
self.returnLetters()
}
NewLine {
self.newLine()
}
CalcButton {
self.calcButton()
}
StartButton {
self.startButton()
}
}
HStack {
ForEach(0..<7) { number in
Letter(text: self.tray[number], index: number, onChanged: self.letterMoved, onEnded: self.letterDropped)
}
}
这可以很好地设置屏幕但是我最好在游戏后期才显示“开始”和“计算”按钮,或者确实用“开始”和“计算”替换“重置”和“换行”按钮。
看起来
理想情况下我会在游戏后期拥有
最后一次改成这个
有没有办法不显示堆栈中的项目或稍后将项目添加到堆栈?
谢谢
这里有一个模式,引入相应的@State 变量和期望的初始状态值。稍后可以随时在视图中的某个位置更改状态,并且视图将自动更新并显示有条件依赖的按钮:
@State private var newLineVisible = false // initially invisible
...
var body: some View {
...
HStack {
ResetButton {
self.returnLetters()
}
if self.newLineVisible { // << include conditionally
NewLine {
self.newLine()
}
}
CalcButton {
self.calcButton()
}
使用@State 布尔变量来定义按钮是否应该显示,当您更改它们的值时,视图将被刷新。
@State var isResetVisible = true
...
if isResetVisible {
ResetButton {
self.returnLetters()
}
}
然后你在某处设置为false,它就会隐藏