如何在选择任何单元格值时显示复选标记

时间:2012-07-20 07:06:37

标签: iphone xcode uitableview

我在表格视图中显示答案我希望如果用户选择任何一个单元格应该获得带文本方面的选中标记图像,如果他从第一个单元格选中标记时间选择另一个单元格,则应删除并显示在所选单元格上/ p>

3 个答案:

答案 0 :(得分:2)

首先在viewController .h文件中添加一个属性

@property (nonatomic, strong) NSIndexPath *theSelectedIndexPath;

并在您的.m文件中合成

@synthesize theSelectedIndexPath = _theSelectedIndexPath;

然后在cellForRowAtIndexPath

if (indexPath.row == self.theSelectedIndexPath.row) {
   cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else { 
   cell.accessoryType = UITableViewCellAccessoryNone;
}   

不要忘记更新theSelectedIndexPath

中的didSelectRowAtIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.theSelectedIndexPath = indexPath;
}

答案 1 :(得分:1)

在.h文件中创建变量

UItableviewCell *selectedCell;

在didSelectRow方法中,从已保存的单元格中删除选择并将新单元格另存为:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    if (selectedCell) {
        selectedCell.accessoryType = UITableViewCellAccessoryNone;
    }
    UItableviewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    selectedCell = cell;
}

为防止可重复使用的单元出现问题,您可以在.h文件中创建NSIndexPath变量而不是UITableViewCell:

NSIndexPath *selectedCellIndexPath;

并更改didSelectRow方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    [tableView scrollToRowAtIndexPath:selectedCellIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:selectedCellIndexPath];
    selectedCell.accessoryType = UITableViewCellAccessoryNone;
    UItableviewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    selectedCellIndexPath = indexPath;
}

答案 2 :(得分:0)

  1. 声明全局int selectedRow
  2. 在您的tableviewDidSelectRow中设置int到所选行。
  3. 也在tableviewDidSelectRow制作[tableView reloadData];
  4. {li>

    tableView:(UITableView *)tableView cellForRowAtIndexPath中执行以下操作:

    if (indexPath.row == selectedRow)
        cell.accessoryView = checkMark;
    else
        cell.accessoryView = nil;
    

    其中“checkMark”是您的复选标记imageview的插座(我使用自定义复选标记)

    多田!