如何从动态数组填充表格
我想把数组填充到表格中,但我不明白为什么我的代码不起作用。为什么表格不会刷新?
现在我的代码看起来是这样的,但表格在点击按钮后仍然没有重新加载或改变数据。
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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。