Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableViewCell在滚动时变为蓝色_Iphone_Objective C_Ios - Fatal编程技术网

Iphone UITableViewCell在滚动时变为蓝色

Iphone UITableViewCell在滚动时变为蓝色,iphone,objective-c,ios,Iphone,Objective C,Ios,我遇到了一个非常奇怪的错误,我不知道如何修复它:当我在UITableView中滚动时,它有时会突出显示蓝色单元格,即使我没有完全选中 例如: -单元格1- -单元格2- -单元格3- -第4单元- 如果我将手指放在单元格2上并滚动到单元格4,它将使单元格2高亮显示,即使didSelectRowAtIndexPath:从未触发 有什么想法吗 编辑 新增代码: UITableViewCell *cell = nil; static NSString *cellId = @"

我遇到了一个非常奇怪的错误,我不知道如何修复它:当我在UITableView中滚动时,它有时会突出显示蓝色单元格,即使我没有完全选中

例如:
-单元格1-
-单元格2-
-单元格3-
-第4单元-
如果我将手指放在单元格2上并滚动到单元格4,它将使单元格2高亮显示,即使didSelectRowAtIndexPath:从未触发

有什么想法吗

编辑 新增代码:

UITableViewCell *cell = nil;
    
    static NSString *cellId = @"StyleDefault";
    cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] 
                 initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId] autorelease];
    }
    
    cell.textLabel.text = @"Cell One";
    cell.textLabel.textAlignment = UITextAlignmentCenter;
    [cell setAccessoryView:nil];
    
    return cell;

在创建单元格时,可以使用以下命令

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell = Your allocation.

cell.selectionStyle = UITableViewCellSelectionStyleNone;
我想您还需要查看触摸的UIViewTable属性,即延迟内容触摸和可取消内容触摸


希望这有帮助。

覆盖-tableView:将在UITableView委托中选择Rowatindexpath:,并为所有内容返回nil,以确保您不允许它选择行。

修复了它

我的解决方案分为两部分:

1) 在cellForRowAtIndexPath中:放置“cell.selected=NO;”,这解决了如果单元格被触碰然后离开屏幕(滚动)的问题

2) 将“[tableView取消RowatineXpath:indexPath动画:是];”放入DidSelectRowatineXpath:而不是我以前的“[[tableView CellForRowatineXpath:indexPath]setSelected:NO];”,这在很多级别上都是错误的

[tableView deselectRowAtIndexPath:indexPath animated:YES];

希望这能帮助其他有这个问题的人。案例结束。

您能给我们看一下cellForRowAtIndexPath中的单元格创建代码吗?请告诉我们您在
cellForRowAtIndexPath
delegate中具体做了什么?我想他希望单元格可以选择。他的观点是当你滚动视图时。这根本不允许我选择行。当我滚动时,这会消除选择,但不幸的是,如果用户确实选择了行,它不会变成蓝色。
[tableView deselectRowAtIndexPath:indexPath animated:YES];