我很难理解 cellForRowAtIndexPath 中的以下代码块:
NSString *uniqueIdentifier = @"SliderCellWithComments";
SliderCellWithComment *cell = nil;
cell = (SliderCellWithComment*) [tableView dequeueReusableCellWithIdentifier:uniqueIdentifier];
if(!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"SliderCellWithComment" owner:nil options:nil];
for (id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[SliderCellWithComment class]])
{
cell = (SliderCellWithComment*)currentObject;
cell.delegationListener = self; //important!!
cell.indexPath = [indexPath copy]; //important!!
break;
}
}
[cell setNameLabelText:@"Days to display:"];
.
.
.
我从 StackOverflow 获得了这段代码,它运行良好,直到我尝试在 iOS 5.1 上运行它,它崩溃并出现错误:'NSInternalInconsistencyException',原因:'NIB 数据无效。
但我对代码的不理解是它似乎并没有真正重用任何东西。
例如:为什么这段代码两次为“cell”赋值?
cell=(SliderCellWithComment*)[tableView dequeueReusableCellWithIdentifier:uniqueIdentifier];
单元格 = (SliderCellWithComment*)currentObject;
如果 2 执行,据我说,没有任何东西被重新使用,因为单元格被分配了一个来自新笔尖的值。
我也没有真正使用数组,为什么下面的代码会呈现空白单元格:
static NSString *CellIdentifier = @"SliderCellWithComments";
SliderCellWithComment *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[SliderCellWithComment alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
[cell setNameLabelText:@"Days to display:"];
cell.delegationListener = self; //important!!
cell.indexPath = [indexPath copy]; //important!!
.
.
.