默认
重用单元格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
中的单元格,并在文本字段字符串更改时将其保存在属性中。
或者,使用回调闭包更新控制器中的属性。