以下代码设置单元格文本,并仅在最后选择时添加checkMark。始终只有一个单元格检查标记并且正常工作,除非它是第一次显示。因此,在您按任何其他单元格之前,不会为该单元格显示文本(仅显示该单元格)。例如,如果在cellPos
时viewDidLoad
= 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];
}
答案 0 :(得分:0)
您是否尝试在切换块后移动if-else块?这样,您可以在将单元格设置为选定之前设置单元格的文本。事实上它只是第一次出现,这表明它可能是一个操作顺序问题。