Jos*_*Lau 5 inheritance cell xib nib swift
我有一个名为NormalImageCell的自定义单元格,该单元格继承自UITableViewCell并绑定到xib。假设我想创建一个名为LargeImageCell的新单元格,该单元格从NormalImageCell继承而无需创建一个全新的xib。我无需接口构建器即可轻松地以编程方式完成此操作,但是由于将NormalImageCell绑定到一个xib,并且xib中的单元只能连接到一个自定义类和一个reuseIdentifier,我如何才能将其重用于LargeImageCell?
这在没有Interface Builder的情况下有效。
class LargeImageCell: NormalImageCell {...}
tableView.registerClass(NormalImageCell.self, forCellWithReuseIdentifier: NormalImageCell.id())
tableView.registerClass(LargeImageCell.self, forCellWithReuseIdentifier: LargeImageCell.id())
Run Code Online (Sandbox Code Playgroud)
这会因Interface Builder而崩溃:
tableView.registerNib(NormalImageCell.nib(), forCellWithReuseIdentifier: NormalImageCell.id())
tableView.registerNib(LargeImageCell.nib(), forCellWithReuseIdentifier: LargeImageCell.id())
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在声明这样的nib和id方法:
class NormalImageCell: UITableViewCell {
class func id() -> String {
return String(self)
}
class func nib() -> UINib {
return UINib(nibName: String(self), bundle: nil)
}
}
class LargeImageCell: NormalmageCell {
...
}
Run Code Online (Sandbox Code Playgroud)
小智 0
您应该从主包中检索笔尖,如下所示:
class func nib() -> UINib {
return UINib(nibName: String(self), bundle: NSBundle.mainBundle())
}
Run Code Online (Sandbox Code Playgroud)