我正在使用此代码设置表视图:

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

        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(!cell){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UILabel *text = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 300, 40)];
        [cell.contentView addSubview:text];
        text.tag = 1;
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    UILabel *text = (UILabel*)[cell.contentView viewWithTag:1];
    text.text = [subjects objectAtIndex:indexPath.row];
    return cell;
}


在我试图使单元格在if(!cell)语句中可重用之前,它一直很好,有人知道这是什么问题。
为了使单元可重用,我检查了this question并正确复制了。

最佳答案

尝试这个

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
for (UIView *view in cell.contentView.subviews) {
[view removeFromSuperview];
}
UILabel *text = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 300, 40)];
[cell.contentView addSubview:text];
text.backgroundColor=[UIColor redColor];
text.textColor=[UIColor blueColor];
if(subjects[indexPath.row].lenght==0)
{
text.text=@"this object is null";
}
else
{
text.text = subjects[indexPath.row];
}
return cell;
}


希望这会有所帮助

关于ios - 尽管有标签和按钮,但可重用的UITableViewCells看起来为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22314055/

10-09 16:24