Создание предметов в HStack видимым / невидимым позже - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть игровое представление с доской, и у меня есть несколько частей в VStack, а последние 2 HStack - это несколько «кнопок», а затем ряд плиток для игры.

        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)
                            }
                }

Это очень хорошо настраивает экран. Однако в идеале я бы не хотел показывать кнопки «Пуск» и «Cal c» до более поздней стадии игры, или даже заменить кнопки «Сброс» и «NewLine» на «Пуск» и «Cal c.

». Как это выглядит As it Looks Now

В идеале Что бы я имел до позже в игре Required look

Переход на это в последний раз go Endgamne screen

Есть ли способ не показывать предметы в стеке или добавлять их в стек позже, пожалуйста?

спасибо

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Используйте логическую переменную @State, которая определяет, должны ли кнопки отображаться или нет, когда вы изменяете их значение, представление обновляется.

@State var isResetVisible = true
...
if isResetVisible {
    ResetButton {
        self.returnLetters()
    }
}

, тогда вы устанавливаете его в false где-то, и оно будет скрываться

0 голосов
/ 03 февраля 2020

Вот шаблон, введите соответствующую переменную @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()
                }
...