这是我的表格视图单元格的继承树。
+----------------+
| UITableViewCel |
+-------+--------+
^
|
+-------+--------+
| BaseFormCell |
+-------+--------+
^
|
+--------+---------+
| TypedFormCell<T> |
+--------+---------+
^
|
+--------+----------+
| TextFieldFormCell | : TypedFormCell<String>
+-------------------+
其中
TextFieldFormCell
具有关联的xib文件,该文件用于实例化自身。当我调用
Bundle.main.loadNibNamed("TextFieldFormCell", owner: nil, options: nil)
时,抛出一个异常并说[ setValue:forUndefinedKey:]:此
类别与键名标签不兼容。
我注意到xib没有为我实例化TextFieldFormCell。相反,它创建了
UITableViewCell
并尝试将nameLabel
注入UITableViewCell
,这导致了异常。这是否意味着IB不支持通用类或从通用类继承的类?
这是此演示的GitHub存储库。 https://github.com/hikui/TypedCellDemo
最佳答案
另一种替代方法:
在您的类viewDidLoad
中注册nib文件
let nibName = UINib(nibName: "<nibName>", bundle:nil)
self.tableView.registerNib(nibName, forCellReuseIdentifier: "<CellIdentifier>")
在您的
cellForRowAtIndexPath
中: let cell : TextFieldFormCell? = tableView.dequeueReusableCell(withIdentifier: "<CellIdentifier>") as! TextFieldFormCell?