来自笔尖的自定义 UiTableViewCell 没有重用?

Posted

技术标签:

【中文标题】来自笔尖的自定义 UiTableViewCell 没有重用?【英文标题】:Custom UiTableViewCell from nib without reuse? 【发布时间】:2014-03-21 07:17:25 【问题描述】:

我需要在不使用“dequeueReusableCellWithIdentifier:”的情况下加载带有在表格中关联的 NIB 的自定义单元格

单元格必须加载新的,不想重用旧的..

假设类名为“CustomCell.h and CustomCell.m”,NIB CustomCell.xib

如何分配和初始化不使用它们的单元格?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

CustomCell *cell = ??

//cell customization

return cell

如何解决这个问题?

【问题讨论】:

假设这与***.com/questions/22551597/… 有关 - 我不认为重用是你的问题。重用单元格更快,除非您要删除单元格中的每个子视图。 【参考方案1】:

您可以使用 NSBundle 的loadNibNamed 方法加载 CustomCell,如下所示。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

CustomCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil] objectAtIndex:0]

//cell customization

return cell

为什么你不想重复使用单元格?有什么具体原因吗?每次创建一个新单元时都会消耗更多内存。如果需要,您可以使用以下代码重复使用,

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"CellIdentifier";

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(!cell)
    cell = [[[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil] objectAtIndex:0]

//cell customization

return cell

【讨论】:

【参考方案2】:
CustomCell *theCell = (MyCellClass*) [[NSBundle mainBundle] loadNibNamed:@"MyCellNibFile" owner:self options:nil] ;

【讨论】:

以上是关于来自笔尖的自定义 UiTableViewCell 没有重用?的主要内容,如果未能解决你的问题,请参考以下文章

笔尖泄漏的自定义单元格

从笔尖初始化自定义 UITableViewCell 没有 dequeueReusableCellWithIdentifier

来自 NIB 的可扩展自定义 UITableViewCell

如何在 UITableViewCell 中获得透明的附件视图? (带截图)

来自 .xib 文件的自定义 UITableViewCell

如何在 UITableViewCell 中使用预定义视图(笔尖)?