iOS UITableViewCell取消选择问题

时间:2014-05-02 15:57:11

标签: ios uitableview

我目前正在为当地兽医开发一款应用程序,以便他的客户可以从他们的iPhone订购产品。我遇到了这个奇怪的错误,即我无法在动态表格中取消选择TableViewCells。

当我在我的桌面视图中按下一个单元格时,它会像通常那样被选中。但是,当我第二次选择一个单元格时,它不会取消选择第一个单元格。即使按下已经选中的单元格,也不会取消选择。

有没有人知道我做错了什么或者我应该怎么做才能解决这个问题?

编辑:

这是我选择表格的代码:

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

hasCellSelected = YES;
cell1 = [tableView cellForRowAtIndexPath:indexPath];
cell2 = [tableView dequeueReusableCellWithIdentifier:@"medicineCell"
         forIndexPath:indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
long row = [indexPath row];
cell2.medicineLabel.text = [_medicineArray objectAtIndex:row];
if (prevIndexPath && ![prevIndexPath isEqual:indexPath])
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
prevIndexPath = indexPath;



}

2 个答案:

答案 0 :(得分:1)

您有多个选择属性设置为YES。

选择你的表,看看Xcode的右侧,属性面板,有一个" allowMultipleSelection"属性。解开它。

或者将其放在viewDidLoad方法

self.tableView.allowsMultipleSelection=NO;

答案 1 :(得分:0)

如果要取消选择当前选定的单元格,可以使用以下代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

如果您想取消选择之前选择的单元格,只需将上述方法更新为

即可
NSIndexPath * prevIndexPath;

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    if (prevIndexPath && ![prevIndexPath isEqual:indexPath])
    {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }

    prevIndexPath = indexPath;
}