我的应用中有一个协议:
public protocol ViewModel {}
public protocol ConfigurableView where Self: UIView {
func configure(with viewModel: ViewModel)
}
显然,这样做的目的是使我的ViewModel方法标准化。
当我在cellForRowAt:方法中应用configure调用时:
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: tableViewCellType(for: indexPath).reuseIdentifier, for: indexPath)
let item = sections[indexPath.section][indexPath.item]
let viewModel = process(item: item)
(cell as? ConfigurableCell)?.configure(item:item)
return cell
}
我看到一个奇怪的行为-本质上,该单元格是正确的类型,并具有我在此方法中期望的属性,但是一旦将其传递到configure方法中,其所有自定义属性(UILabels等)均为零。就像它在不转移所有属性的情况下复制了单元格一样。一旦代码进入了configure方法的内部,它便是完全不同的指针。
我在这里想念什么?我已经尝试过在操场上重新创建它,但是我做不到,这使我怀疑这对于使单元出队是一件奇怪的事情。