我在这里搜索了很多,我发现有很多人告诉他们把代码放在if (cell == nil)
里面,我做了,但它没有用。
我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [listaMaterias objectAtIndex:indexPath.row];
if (cell == nil) {
cell.textLabel.textColor = [UIColor colorWithRed:17/255 green:112/255 blue:1/255 alpha:1];
}
return cell;
}
答案 0 :(得分:3)
当你创建你的UIColor时,你正在使用整数除法。 17/255 = 0.你想使用浮点除法:[UIColor colorWithRed:17.0f / 255.0f绿色:112.0f / 255.0f蓝色:1.0f / 255.0f alpha:1.0f]。
顺便说一句,那个(cell == nil)检查是没有必要的,因为在nil上调用方法是合法的,它们不会做任何事情(并且如果它们返回一个对象将返回nil)。所以“(nil).textLabel”的计算结果为nil,而“(nil).textColor =”(变为“[nil setTextColor:])只是立即返回。
答案 1 :(得分:1)
dequeueReusableCellWithIdentifier:forIndexPath:
总是返回一个有效的单元格,因此单元格永远不会nil
,并且永远不会执行该代码。您之前使用的建议是在使用initWithStyle:reuseIdentifier:
时,可以返回nil
,因此cell == nil
块中需要创建单元格。
您可以直接调用它,只要您还将颜色创建代码更改为@Sean Cier指出的内容。