问题 - 简短版
尽管将我的单元格高度配置为112,但我的单元格在标准高度44处被实例化。这会弄乱我的子视图,除非我使用额外的资源并调用cell.layoutSubviews
上下文
我创建了一个名为UITableViewCell
的{{1}}的子类,在ResearchCell
中,我执行以下操作:
init
我正在为我的手机使用override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
print(NSStringFromCGRect(self.frame)) // prints out the standard 320*44 cell
manageViews()
}
:
到目前为止我的设置
在xib
中,我在ViewController
中调用以下内容:
viewDidLoad
我也称之为:
researchTableView.dataSource = researchDataSource
researchTableView.delegate = self
researchTableView.register(ResearchCell.self, forCellReuseIdentifier: "ResearchCell")
在func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 112.0
}
中,我执行以下操作:
researchDataSource
问题
除非我调用func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ResearchCell", for: indexPath) as! ResearchCell
cell.topLineLabel?.text = "Hola"
cell.layoutSubviews() //At the moment I have to call this to re-layout the views
return cell
}
(参见上面的评论),否则单元格会自动采用320 * 44的标准大小,并且我在程序中布置的所有视图都是混乱的。单元格应该是 112 的高度,我已在cell.layoutSubviews()
和xib
中指定。但是,为什么不进行细胞培养?
赞赏任何指针 - 谢谢!
答案 0 :(得分:2)
您正在注册课程,而不是您的自定义笔尖。更改以下内容:
researchTableView.register(ResearchCell.self, forCellReuseIdentifier: "ResearchCell")
要:
researchTableView.register(UINib(nibName: "ResearchCell", bundle: nil), forCellReuseIdentifier: "ResearchCell")
然后,这将从您的包中加载nib,而不是实例化该类。