在 Swift 的 UITableView 中保留单元格


默认

重用单元格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似乎是额外的。

不保留单元格

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

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

最新更新