UITableView选中的单元格在启动时不显示文本

时间:2011-08-24 16:36:35

标签: iphone objective-c cocoa-touch uitableview

以下代码设置单元格文本,并仅在最后选择时添加checkMark。始终只有一个单元格检查标记并且正常工作,除非它是第一次显示。因此,在您按任何其他单元格之前,不会为该单元格显示文本(仅显示该单元格)。例如,如果在cellPosviewDidLoad = 4,则该单元格将不包含文本。

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

    NSString* cellIdentifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell == nil)
    {
        cell = (UITableViewCell*) [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    }
    cell.accessoryType = UITableViewCellAccessoryNone;


    if (indexPath.section == 0) {


        if(indexPath.row == cellPos)
        {
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            cell.selected = YES;
        }
        else
        {
            cell.accessoryType = UITableViewCellAccessoryNone;
            cell.selected = NO;
        }



        switch (indexPath.row) {
            case 0:
                cell.textLabel.text = @"English";
                cell.imageView.image = [UIImage imageNamed:@"english.png"];
                break;
            case 1:
                cell.textLabel.text = @"Español";
                cell.imageView.image = [UIImage imageNamed:@"spanish.png"];
                break;
            case 2:
                cell.textLabel.text = @"Deutsch";
                cell.imageView.image = [UIImage imageNamed:@"germany.png"];
                break;
            case 3:
                cell.textLabel.text = @"Français";
                cell.imageView.image = [UIImage imageNamed:@"french.png"];
                break;
            case 4:
                cell.textLabel.text = @"Italiano";
                cell.imageView.image = [UIImage imageNamed:@"italian.png"];
                break;
            default:
            break;}
    }
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    cellPos = indexPath.row;
    [tableView reloadData];
}

1 个答案:

答案 0 :(得分:0)

您是否尝试在切换块后移动if-else块?这样,您可以在将单元格设置为选定之前设置单元格的文本。事实上它只是第一次出现,这表明它可能是一个操作顺序问题。