UITableViewCell 滚动时变为蓝色
Posted
技术标签:
【中文标题】UITableViewCell 滚动时变为蓝色【英文标题】:UITableViewCell turns blue when scrolling 【发布时间】:2011-04-18 05:16:22 【问题描述】:我遇到了一个非常奇怪的错误,我不知道如何解决它:当我在 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;
【问题讨论】:
能否给我们看看 cellForRowAtIndexPath 中的单元格创建代码? 请告诉我们您在CellForRowAtIndexPath
delegate 中具体做了什么?
【参考方案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];”进入 didSelectRowAtIndexPath: 而不是我曾经拥有的“[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO];”这在很多层面上都是错误的。
[tableView deselectRowAtIndexPath:indexPath animated:YES];
希望对遇到此问题的其他人有所帮助。结案。
【讨论】:
【参考方案2】:您可以在创建单元格时使用以下功能。
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = Your allocation.
cell.selectionStyle = UITableViewCellSelectionStyleNone;
我想您还需要查看触摸的 UIViewTable 属性,即延迟内容触摸和可取消内容触摸。
希望这会有所帮助。
【讨论】:
这会在我滚动时消除选择,但不幸的是,如果用户实际选择了该行,它不会变成蓝色。【参考方案3】:在您的 UITableView 委托中覆盖 -tableView:willSelectRowAtIndexPath:,并为所有内容返回 nil,以确保您不允许它选择行。
【讨论】:
我猜他希望单元格是可选择的。他的观点是当你滚动视图时。 这根本不允许我选择行以上是关于UITableViewCell 滚动时变为蓝色的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UIButton 在显示操作表时变为灰色,然后在关闭操作表时变为蓝色