当前位置 : 主页 > 手机开发 > 其它 >

Swift – 如何从绑定到xib文件的自定义单元格继承

来源:互联网 收集:自由互联 发布时间:2021-06-11
我有一个名为Normal ImageCell的自定义单元,它继承自UITableViewCell并绑定到xib.假设我想创建一个名为LargeImageCell的新单元,它继承自NormalImageCell而不创建一个全新的xib.我可以在没有接口构建器
我有一个名为Normal ImageCell的自定义单元,它继承自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())

这与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,如:

class func nib() -> UINib {     

   return UINib(nibName: String(self), bundle: NSBundle.mainBundle())
}
网友评论