我有一个UITableView,显示用户联系人簿中的联系人。为此,我正在使用接触框架,这是工作得很好。
我正在显示一个复选框和一个联系人姓名和电话号码。只希望用户选择多个项目。为此,我为checkbox制作了一个按钮,并将其图片更改为checked和unchecked。我做了一个简单的结构

struct Contacts{
 var name = ""
 var number = ""
 var isSelected = false
 }

所以在UiTableViewCell中,如果已经为false,我将使isSelected为true,反之亦然。但问题是它得到了默认的错误值。
我做错什么了?
UITableView的源(列表)如下
public var listContacts : [Contacts] = []

我在联系人框架中填写这个列表。现在关于用户选择我不知道为什么这不是真的。?
你知道我错过了什么吗??
更新1:
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)



}

最佳答案

结构是按值传递的,当您更改selectedModel时,您没有更改listContacts上的模型,而是更改了一个新模型。这就是为什么名单本身没有改变。
您可以考虑将结构替换为类-类是通过引用传递的

10-08 14:34