ios - .onAppear 是否导致文本在 SwiftUI 中消失?

标签 ios swift swiftui

我正在做一个简单的倒计时。我期望发生的是First计入 0 ,然后 Second计入 0 .当语句切换到 else block 时,HStack 文本在 Canvas 中消失。为什么会发生这种情况?

import SwiftUI

struct TestCountdown: View {
    @State var first = 5
    @State var second = 5
    @State var totalDuration = 30
    var body: some View {
        VStack {
             Text("\(totalDuration)")
            if (first > 0) && (second > 0) {
                HStack {
                    TestCode(number: $first, title: "First")
                    Spacer()
                    TestCode(number: $second, title: "Second")
                }
            }
        }
        .onAppear {
            Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
                if self.totalDuration > 0 {
                    self.totalDuration -= 1
                    
                    if self.first > 0 {
                        self.first -= 1
                    } else {
                        self.second -= 1
                    }
                }
            }
        }
    }
}

struct TestCode: View {
    @Binding var number: Int
    @State var title: String
    var body: some View {
        VStack {
            Text(title)
                .font(.system(size: 20, weight: .medium, design: .rounded))
            Text("\(number)")
                .font(.system(size: 30, weight: .medium, design: .rounded))
        }
        .frame(minWidth: 50, maxWidth: .infinity)
    }
}

最佳答案

这意味着您的 HStack将在 时显示两个 firstsecond > 0:

if (first > 0) && (second > 0) {
    HStack {
        ...
    }
}
如果要显示HStack要么 其中 > 0 你可以这样做:
if first > 0 || second > 0 { ... }
请参阅 Apple 文档:
  • BasicOperators
  • 关于ios - .onAppear 是否导致文本在 SwiftUI 中消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000608/

    相关文章:

    ios - 忽略 Completable 上的错误 - RxSwift

    ios - UISearchBar 未更新

    swiftui - 如何将环境对象变量绑定(bind)到 slider

    swift - 从 UserDefaults 中解码 Swift 中自定义结构的数组

    ios - 仅在点击后才应用 swift 的自动布局约束

    ios - 应用程序加载器 : ERROR ITMS-90502

    ios - Alamofire - 将数据保存在存储的属性中

    ios - 如何使用 NSPersistentCloudKitContainer 和 SwiftUI 手动获取 CloudKit 数据以更新 UI?

    ios - 如何查看我的 iPhone/iPad 中安装的其他应用程序的启动次数?

    ios - 无法隐藏 UIButton?