选择单元格时,如何阻止 UIView 的背景颜色消失?

Posted

技术标签:

【中文标题】选择单元格时,如何阻止 UIView 的背景颜色消失?【英文标题】:How can i stop the background colour of a UIView from disappearing when cell is selected? 【发布时间】:2017-09-01 13:16:21 【问题描述】:

我有一个 tableView,其中包含一个标签、图像和 UIVIew,背景颜色为红色。

这是我的 tableView 中一行的图片,其中显示了一个标签、图像和一个具有红色背景色的 UIView

但是每当我选择一个单元格时,UIVIew 的背景颜色就会消失,我只能看到标签和图像

当我选择它时这是同一行

我想知道是否有办法在选择单元格时阻止视图的背景颜色消失。

【问题讨论】:

cell.seletionStyle = .none aur refer ***.com/questions/30233468/… 【参考方案1】:

这是因为单元格选择样式设置为默认值,请将UITableViewCell 选择样式更改为无。

目标 C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

斯威夫特 3:

cell.selectionStyle = .none

如果您想通知用户已选择单元格,请维护一个包含 indexpath 对象列表的 NSArray 属性。

更新委托方法上的NSArray didSelectRowAtIndexPath 方法。

如果NSArray中存在indexpath,则在cellForRowAtIndexPath方法中更改背景颜色

最后在 didSelectRowAtIndexPath 上重新加载选中的行。

【讨论】:

好的,谢谢!但是出于用户交互的目的,我如何向用户反馈他/她做出了选择?【参考方案2】:

试试这个:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
      //Just add this below line didSelectRowAt
      tableView.deselectRow(at: indexPath, animated: true)


【讨论】:

【参考方案3】:

稍微好一点。我提取自MBProgressHUD/Demo

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
           [tableView deselectRowAtIndexPath:indexPath animated:YES];
       );
   

【讨论】:

以上是关于选择单元格时,如何阻止 UIView 的背景颜色消失?的主要内容,如果未能解决你的问题,请参考以下文章

选择单元格时,按钮的背景颜色会改变然后恢复

选择单元格时,更改 QTableView 中图标的颜色突出显示

选择单元格时,图像视图消失但 UILabel 消失

使用javascript,当我单击表格单元格时如何获取它的背景颜色?

在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像

如果背景颜色为黑色,excel会停止用户访问单元格