我有一个UITableView,它显示了来自用户通讯录的通讯录。为此,我正在使用Contacts Framework,并且工作正常。
我正在显示一个复选框以及联系人姓名和电话号码。并且只希望用户选择多个项目。为此,我创建了一个复选框复选框,并将其图片更改为选中和未选中。我为此做了一个简单的结构
struct Contacts{
var name = ""
var number = ""
var isSelected = false
}
因此,在UiTableViewCell中,如果isSelected已经为false,则将其设为true,反之亦然。但问题是它恢复到其默认的假值。
我做错了什么?
UITableView的源(列表)如下
public var listContacts : [Contacts] = []
,我正在从Contacts Frame工作中填写此列表。现在在用户选择上,我不知道为什么这不是真的。
有什么主意我想念的吗?
update1:
here is a code for changing value on item click or tap
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var selectedModel = listContacts[indexPath.row]
selectedModel.isSelected = !selectedModel.isSelected
print("Name ",selectedModel.name," : ",selectedModel.isSelected)
}
答案 0 :(得分:2)
结构是通过值传递的,当您更改selectedModel时,您没有更改列表联系人中的一个,而是一个新的。这就是为什么列表本身没有变化的原因。
您可能会考虑将结构替换为类-类通过引用
传递