来自笔尖的自定义 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 中获得透明的附件视图? (带截图)