非常好奇如何从tableView:cellForRowAtIndexPath:中处理自定义表格单元格。
我在viewDidLoad中实例化一个自定义表格单元格。我的问题是,当没有可重用的单元格时,如何处理cellForRowAtIndexPath中的情况?例如,返回搜索结果时。如果需要,如何创建新的自定义单元格?我在下面列出了相关的方法。
由于
-(void)viewDidLoad
{
[super viewDidLoad];
//Load custom table cell
UINib *customCellNib = [UINib nibWithNibName:@"CustomItem" bundle:nil];
//Register this nib, which contains the cell
[[self tableView] registerNib:customCellNib forCellReuseIdentifier:@"CustomItemCell"];
//.... More stuff here
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomItemCell *cell =
[tableView dequeueReusableCellWithIdentifier:@"CustomItemCell"];
// If there is no reusable cell of this type, create a new one
if (!cell) {
//Is this right?
cell = [[CustomItemCell alloc] init];
}
//Set up cell with data here...
return cell;
}
答案 0 :(得分:0)
我最终通过访问主包来寻找自定义表格单元格nib文件来解决这个问题。当我们找到自定义表格单元格类时,我们将iVar“单元格”分配给该对象。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @"CustomItemCell";
CustomItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
// If there is no reusable cell of this type, create a new one
if(cell == nil){
NSArray *nibObjects = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:nil options:nil];
for (id currentObject in nibObjects) {
if([currentObject isKindOfClass:[CustomItemCell class]])
{
cell = (CustomItemCell *)currentObject;
}
}
}
//Assign data to cell here
}