如何从动态数组填充表格

移动开发 2026-07-11

我想把数组填充到表格中,但我不明白为什么我的代码不起作用。为什么表格不会刷新?

现在我的代码看起来是这样的,但表格在点击按钮后仍然没有重新加载或改变数据。

import SwiftUI
import Foundation
//declare structure
struct User: Identifiable {
    let id = UUID()
    let USERADgroup: String
}

struct ContentView: View {
    //declare some variables
    @State private var userGroupString: String = ""
    @State private var ADGroupsArray = [User(USERADgroup: "qqq ")]
    var body: some View {
        VStack {


            //my Table
            Table(ADGroupsArray) {
                TableColumn("User Groups", value: \.USERADgroup)
            }
            /my button
            Button(/*@START_MENU_TOKEN@*/"Button"/*@END_MENU_TOKEN@*/) {
                // declare new value of the string
                userGroupString = String("Group1, Group2, Group3")
                // conform string to array
                let finArray = userGroupString.components(separatedBy: ", ")
                // redeclare main array
                let ADGroupsArray: [User] = finArray.map { USERADgroup in User(USERADgroup: USERADgroup) }
            }
            .padding()
            .frame(width: 400.0, height: 400.0)
        }
    }

    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
}

解决方案

你在遮蔽状态,重新声明而不是更新。

这一行:

let ADGroupsArray: [User] = ...

会创建一个新的局部变量,而不是更新 @State

修复:

ADGroupsArray = finArray.map {
    User(USERADgroup: $0)
}

SwiftUI只有在 @State 被修改时才会更新。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章