Tableview,选定的单元格,不接受用户点击

时间:2013-07-18 04:57:13

标签: ios uitableview

我有一个类似于首选项页面的uitableview。我使用NSDefaults保存用户选择,并在加载时重新加载这些默认值并设置tableview单元格以显示为选中状态。

我在这个方法中这样做

   - (UITableViewCell *)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
//if this cell should look as if it was selected as a preference {
    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor colorWithRed:(200/255.0) green:(200/255.0) blue:(200/255.0) alpha:0.6];
    cell.selectedBackgroundView = selectionColor;
    cell.selected = true;
}
else{
    cell.selected = false;
}
return cell;
}

现在,如果用户取消选择我在此处理的单元格

  - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

我遇到的问题是,如果我加载应用程序,然后正确设置我之前选择的单元格,他们就不会接受点击事件!所以用户永远不能取消选择它们。

1 个答案:

答案 0 :(得分:0)

对您有所帮助。

尝试这种方法

 - (UITableViewCell *)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexpath.row == selectedrow) {
    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor colorWithRed:(200/255.0) green:(200/255.0) blue:(200/255.0) alpha:0.6];
    cell.selectedBackgroundView = selectionColor;
    cell.selected = true;
}
else{
    cell.selected = false;cell.selectedBackgroundView = nil;
}
return cell;
}

如果您需要任何细节,请与我们联系。