在Swift中的UITableView中保留单元格?

时间:2018-12-26 08:51:25

标签: ios swift uitableview cell

UITableView默认情况下会重用单元格。但是在我的情况下,某些单元格有一个UITextField对象,当单元重用时,我不想失去其值。该表有几行,因此我可以处理内存中的所有单元格。

我当前使用的代码示例:

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.register(UINib(nibName: "TPAddressInfoTableViewCell", bundle: nil), forCellReuseIdentifier: InfoCellIdentifier)
        ...

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let item = items[indexPath.row]
        switch item.appearance {
        case .textWithTitle:
            let cell = tableView.dequeueReusableCell(withIdentifier: InfoCellIdentifier) as! TPAddressInfoTableViewCell
            return cell
        case .picker:
            ...

如何正确保留此类细胞?在这种情况下,将每个单元格的UITextFieldDelegate链接到当前的UIViewController似乎是多余的。

1 个答案:

答案 0 :(得分:4)

不保留单元格

在数据模型中保存单元格的UI元素的所有值,并在cellForRow中恢复值。

例如,将相应的模型项传递到cellForRow中的单元格,并在文本字段字符串更改时将其保存在属性中。
或者,使用回调闭包来更新控制器中的属性。