从Storyboard加载自定义的UITableViewCell
目前我正在使用故事板的自动布局来dynamic调整自定义UITableViewCell
的大小。 除了滚动时存在内存泄漏之外,一切正常,因为它应该如此。
我知道问题来自于呼叫
[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
从内部
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
我的问题是,创build参考单元的最佳方法是什么? 如何从故事板加载一个没有dequeueReusableCellWithIdentifier
的单元格?
可以从viewDidLoad
调用dequeueReusableCellWithIdentifier
并创build一个引用单元格作为属性?
我需要参考单元的尺寸目的。
谢谢你的帮助。
关于如何创build引用单元格(请参阅原始问题),我可以看到有几个选项:
-
用XIB创build一个自定义单元格,这里有很棒的文章 – > 一个链接 !
- 这是@smileyborg指出的,谢谢!
-
在代码中创build自定义单元格以及约束。
-
在故事板中创build自定义单元格作为原型单元格
- 之后有2个选项:
- 将表格视图中的自定义单元格拖放到故事板场景中,作为顶层笔尖对象(不是视图层次结构的一部分),然后简单地为其创build出口。
- 复制自定义单元格并将其粘贴到故事板场景。 当以这种方式使用它时,不需要将原始单元格与login表一起注册。
- 这两种方法的小问题是,一旦将自定义单元格拖放到故事板场景中,将无法以可视方式查看并排列UI。
- 这里伟大的文章 – > 一个链接 !
- 之后有2个选项:
谢谢大家的帮助!
可以从viewDidLoad中调用dequeueReusableCellWithIdentifier并创build一个引用单元格作为属性?
是的,你可以做到这一点。 或者懒惰的初始化属性:
- (UITableViewCell *)referenceCell { if (!_referenceCell) { _referenceCell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"]; } return _referenceCell; }
您可以将这个单元出队一次并存储高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { static NSNumber *height; if (!height) { UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"YourCustomCell"]; height = @(cell.bounds.size.height); } return [height floatValue]; }