我有一个视图控制器,它有一个UITableViewController作为主视图。在函数 - tableView:cellForRowAtIndexPath中:我使用以下代码为我的单元格创建自定义视图。
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
CellIdentifier];
// Configure the cell...
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.backgroundView = [[UIView alloc] init];
然后我将自己的自定义视图添加到cell.backgroundView。但是,当我点击一个单元格时,单元格会变成灰色。我的代码中没有指定这应该发生的地方。为了进行一些测试,我将一些文本添加到单元格的标准部分,如下所示。
cell.textLabel.text = @"TEST";
当我跑步时,我看到了自定义视图和“TEST”标签。按下一个单元格时,出现灰色屏幕,此时“TEST”可见,我的自定义视图仍然不可见。我的猜测是必须采取其他措施来确保自定义视图可见。我正在使用tableView:didSelectRowAtIndexPath:函数来注册抽头,但奇怪的是,除第一个之外的所有抽头事件都会调用此函数。另外,我试图在这里设置背景颜色,但它不起作用。
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
newCell.backgroundColor = [UIColor whiteColor];
}
感谢任何帮助。
答案 0 :(得分:6)
在tableView:cellForRowAtIndexPath:
中,将每个单元格的selectionStyle
属性更改为UITableViewCellSelectionStyleNone
。
答案 1 :(得分:0)
您可以通过将Selection
的{{1}}属性设置为Table View Cell
答案 2 :(得分:0)
接受的答案对我不起作用。这个问题让我疯狂了一段时间,因为它看起来像一个"故障"加载下一个视图时的任何选择..
我的解决方案:我必须转到实际的TableViewCell(我构建的自定义单元格)的.xib文件中选择单元格并选择CellView。 (确保选择单元格,而不是其中的子视图。它将变为蓝色,如图所示)。在左侧单击"选择" - > "无&#34 ;.这个应该与使用代码完全相同,但由于某种原因它只是没有工作......
答案 3 :(得分:0)
保持背景颜色不变的最好方法之一是:
YOUR_VIEW.backgroundColor
设置为clearColor
YOUR_VIEW.layer.backgroundColor
设置为YOUR_COLOR
让我们看看 Objective-C 实现:
self.YOUR_VIEW.backgroundColor = UIColor.clearColor;
self.YOUR_VIEW.layer.backgroundColor = UIColor.YOUR_COLOR.CGColor;
注意:不需要关闭精美的选择或突出显示动画。
答案 4 :(得分:0)
迅速
从UITableViewDataSource的cellForRowAt方法中设置cell.selectionStyle = .none
。