滚动时UITableViewCell变为蓝色

时间:2011-04-18 05:16:23

标签: iphone objective-c ios

嘿伙计们,我得到一个非常奇怪的错误,我无法弄清楚如何解决它:当我在我的UITableView中滚动时,它有时会突出显示一个蓝色的单元格,即使我没有完全选择。

例如:
-Cell 1-
-Cell 2-
-Cell 3-
- 4月4日 如果我将手指放在Cell 2上并滚动到Cell 4,它将突出显示Cell 2,即使didSelectRowAtIndexPath:永远不会被触发。

有什么想法吗?

EDIT 添加了代码:

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;

3 个答案:

答案 0 :(得分:1)

固定它!

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

1)在cellForRowAtIndexPath中:输入“cell.selected = NO;”,它解决了单元格是否被触及然后离开屏幕(滚动)的问题。

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];

//Here:
cell.selected = NO;

return cell;

2)把“[tableView deselectRowAtIndexPath:indexPath animated:YES];” into didSelectRowAtIndexPath:而不是我以前的“[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO];”这么多级别都是错的。

[tableView deselectRowAtIndexPath:indexPath animated:YES];

希望能帮助其他人解决这个问题。案件结案。

答案 1 :(得分:0)

创建单元格时可以使用以下内容。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell = Your allocation.

cell.selectionStyle = UITableViewCellSelectionStyleNone;

我想你还需要看一下触摸的UIViewTable属性,即延迟内容触摸和可取消的内容触摸。

希望这有帮助。

答案 2 :(得分:0)

在你的UITableView委托中覆盖-tableView:willSelectRowAtIndexPath:并返回nil以确保你不允许它选择行。