使用自定义尺寸初始化时布局单元子视图

时间:2017-05-01 20:53:49

标签: ios swift uitableview tableviewcell

问题 - 简短版

尽管将我的单元格高度配置为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() }

enter image description here

到目前为止我的设置

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中指定。但是,为什么不进行细胞培养?

赞赏任何指针 - 谢谢!

1 个答案:

答案 0 :(得分:2)

您正在注册课程,而不是您的自定义笔尖。更改以下内容:

researchTableView.register(ResearchCell.self, forCellReuseIdentifier: "ResearchCell")

要:

researchTableView.register(UINib(nibName: "ResearchCell", bundle: nil), forCellReuseIdentifier: "ResearchCell")

然后,这将从您的包中加载nib,而不是实例化该类。