我目前正在为当地兽医开发一款应用程序,以便他的客户可以从他们的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;
}
答案 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;
}