chi*_*ong 6 ios swift swiftui swiftui-list swiftui-state
我有一个 struct User ,其爱好列表如下:
struct User: Hashable, Codable, Identifiable, Equatable {
var id: String
var name: String
var hobbies: [String]
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用用户列表作为状态变量生成列表视图。单击列表视图中的按钮时,新的爱好将添加到用户的爱好中。
struct UsersListView: View {
@State var users: [User]
var body: some View {
TitleView(titleText: "Friends")
.padding(.leading, 30.0)
List(userDisplayList) { user in
Text(user.name)
Text(user.hobbies.joined(separator: ", "))
Button(action: {self.users[0].hobbies.append("new hobby")}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我单击按钮时,用户状态变量不会更改并保持不变。谁能解释一下这是怎么回事?
小智 1
您在 中显示每个用户userDisplayList,而不是在 中users。
因此,当您更改 中的某些值时users,SwiftUI 认为您的视图中没有任何内容需要更新,因为没有任何内容依赖于users变量。
如果List(users) { user in您的userDisplayList.
| 归档时间: |
|
| 查看次数: |
3732 次 |
| 最近记录: |