列表中的iOS数据未保存值

时间:2018-11-28 13:36:33

标签: ios swift uitableview

我有一个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)



}

1 个答案:

答案 0 :(得分:2)

结构是通过传递的,当您更改selectedModel时,您没有更改列表联系人中的一个,而是一个新的。这就是为什么列表本身没有变化的原因。

您可能会考虑将结构替换为类-类通过引用

传递