【发布时间】:2016-12-05 13:58:46
【问题描述】:
我有一个名为 NormalImageCell 的自定义单元格,它继承自 UITableViewCell 并绑定到 xib。假设我想创建一个名为 LargeImageCell 的新单元格,它继承自 NormalImageCell 而不创建全新的 xib。我可以在没有界面生成器的情况下以编程方式轻松完成此操作,但由于 NormalImageCell 绑定到 xib 并且 xib 中的单元格只能连接到一个自定义类和一个重用标识符,我怎么能将其用于 LargeImageCell 吗?
这在没有 Interface Builder 的情况下工作。
class LargeImageCell: NormalImageCell {...}
tableView.registerClass(NormalImageCell.self, forCellWithReuseIdentifier: NormalImageCell.id())
tableView.registerClass(LargeImageCell.self, forCellWithReuseIdentifier: LargeImageCell.id())
这会导致 Interface Builder 崩溃:
tableView.registerNib(NormalImageCell.nib(), forCellWithReuseIdentifier: NormalImageCell.id())
tableView.registerNib(LargeImageCell.nib(), forCellWithReuseIdentifier: LargeImageCell.id())
顺便说一句,我正在声明这样的 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 {
...
}
【问题讨论】:
-
你如何声明你的
nib方法? -
类 func nib() -> UINib { return UINib(nibName: String(self), bundle: nil) }
-
您的项目中是否有两个 nib 文件:NormalImageCell.xib 和 LargeImageCell.xib ?
-
我只有 NormalImageCell.xib。我不想为 LargeImageCell 创建另一个 xib,因为这两个单元格几乎相同,只有 imageView 大小不同。我正在尝试通过继承来重用 NormalImageCell,这样我就不必复制任何 xibs/代码。
-
我不想为 LargeImageCell 创建另一个 xib 那你就做不到。
标签: swift inheritance cell xib nib