我遇到了简单的问题,无法找到任何解决方案.
MyCell.xib
有文件所有者MyCell : UITableViewCell
类.
我这样用它:
viewDidLoad方法:
let nib = UINib(nibName: "MyCell", bundle: nil) self.tableView.register(nib, forCellReuseIdentifier: "myIdentifier")
tableView cellForRowAt方法:
let cell = tableView.dequeueReusableCell(withIdentifier: "myIdentifier", for: indexPath) as? MyCell
它运作良好.
我将我的类子类化为添加一些新方法:
class SuperCell : MyCell { func coolMethod { print("cool") } }
并尝试使用它:
let cell = tableView.dequeueReusableCell(withIdentifier: "myIdentifier", for: indexPath) as? SuperCell
它返回 nil
我怎样才能使它工作?
我尝试在InterfaceBuilder中使用标识符myIdentifier
和类创建原型单元格SuperCell
,但它没有帮助.
我只想对不同的单元类使用相同的视图(xib).
在我的情况下,我有MyCell
视图(xib)的公共cell().MyCell
完全描述字段(IBOutlets).此外,我想创建一些子类的另一个单元类MyCell
,但它们将提供这些IBOutlet的一些行为.例如,FirstMyCell : MyCell
将有方法setFieldsFrom(objectOne: ObjectOne)
,SecondMyCell : MyCell
并将有另一种方法setFieldsFrom(anotherObject: ObjectAnother)
.
当然,我可以将这两种方法添加到我的MyCell
课程中,但它会是不洁净的.