0

我有在表格视图中显示的答案我希望如果用户选择任何单元格应该得到带有文本侧的复选标记图像并且如果平均时间他从第一个单元格复选标记中选择另一个单元格应该被删除并显示在选定的

4

3 回答 3

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;
}   

别忘了更新theSelectedIndexPathin didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.theSelectedIndexPath = indexPath;
}
于 2012-07-20T07:19:03.517 回答
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;
}
于 2012-07-20T07:10:44.690 回答
0
  1. 声明一个全局 intselectedRow
  2. 在您tableviewDidSelectRow设置的 int 到选定的行。
  3. 也在tableviewDidSelectRow制作中[tableView reloadData];
  4. 在您tableView:(UITableView *)tableView cellForRowAtIndexPath执行以下操作:

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

其中“checkMark”是您的复选标记图像视图的出口(我使用自定义复选标记)

多田!

于 2012-07-20T07:17:53.500 回答