小编jas*_*hng的帖子

修改 SwiftUI 中 ForEach 中的结构数据

我有一个概述数据的结构,然后是一个具有结构数组的类。

struct Example: Codable, Identifiable {
     var id: UUID

     var title: String
     var description: String?

     var tags: [String]
}

class Examples: ObservableObject {
     @Published var examples = [Example]()
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个用按钮显示数据的 ForEach:

ForEach(examples.examples) { example in
     VStack {
         Button("Complete") {
            example.completed = true
         }
         Text(example.title)
     }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时,它给出错误“无法分配给属性:‘example’是‘let’常量。” 我尝试使用 @Binding var(来自这篇文章)将示例传递到一个单独的视图中,并使用索引修改数据(来自这篇文章),但是两者都给我一个错误,指出 Xcode 无法生成诊断报告并提交反馈。我怎样才能修改数据?

抱歉,如果这是一个不好的问题,我对 SwiftUI 还很陌生

foreach swift swiftui

4
推荐指数
1
解决办法
2052
查看次数

在 SwiftUI 2.0 中启动应用程序期间运行代码

在我的 App 结构中,我有一个小函数来检查用户之前是否打开过该应用程序。如果没有,它会显示一个包含几个问题的入职视图。现在,我只有一个 .onAppear 附加到 Onboarding 和 ContentView 来运行该函数,但是当您启动应用程序时,Onboarding 视图会快速闪烁一秒钟。如何在启动期间运行该功能,以便 Onboarding 视图不会闪烁一秒钟?

这是我的应用程序结构:

import SwiftUI

@main
struct TestApp: App {
    @State private var hasOnboarded = false
    
    var body: some Scene {
        WindowGroup {
            if hasOnboarded {
                ContentView(hasOnboarded: $hasOnboarded)
                    .onAppear(perform: checkOnboarding)
            } else {
                Onboarding(hasOnboarded: $hasOnboarded)
                    .onAppear(perform: checkOnboarding)
            }
        }
    }
    
    func checkOnboarding() {
        let defaults = UserDefaults.standard
        let onboarded = defaults.bool(forKey: "hasOnboarded")
        hasOnboarded = onboarded
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui

2
推荐指数
1
解决办法
1327
查看次数

标签 统计

swift ×2

swiftui ×2

foreach ×1