如何在选择单元格时设置accessoryType

C.J*_*hns 4 iphone accessorytype ios

我一直在试图弄清楚如何在选择单元格时将accessoryType设置为UITableViewCellAccessoryCheckmark,但我很难找到一个合适的例子.

如果你知道如何做到这一点,或者你可以告诉我一个很好的教程.

Mad*_*dhu 10

要将用户限制为仅一个选择,意味着仅创建一个选项的独占列表,您可以按照以下步骤操作;

首先,在.h文件中声明一个全局索引路径,以跟踪已选择的单元格 - >

NSIndexPath *oldIndexPath;
Run Code Online (Sandbox Code Playgroud)

创建单元格时,请务必将附件类型设置为none,以便在看到表格时默认不选择单元格;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CallIdentifier"];
        cell.accessoryType = UITableViewCellAccessoryNone;      
    }
    return cell; 
}
Run Code Online (Sandbox Code Playgroud)

最后,在didSelectRowAtIndexPath委托方法中,添加以下代码,该代码将从已选择的单元格中删除复选标记,并为新选择的单元格添加复选标记.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if (oldIndexPath==nil) { // No selection made yet
        oldIndexPath=indexPath;
        [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    }
    else {
        UITableViewCell *formerSelectedcell = [tableView cellForRowAtIndexPath:oldIndexPath]; // finding the already selected cell
        [formerSelectedcell setAccessoryType:UITableViewCellAccessoryNone];

        [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; // 'select' the new cell
        oldIndexPath=indexPath;
    }   
}
Run Code Online (Sandbox Code Playgroud)

希望这会成功!:)