TableView Swift 中的多选

Posted

技术标签:

【中文标题】TableView Swift 中的多选【英文标题】:Multiple Selection In TableView Swift 【发布时间】:2018-05-14 09:57:37 【问题描述】:

当我尝试编辑并选择表格视图单元格时,它正在选择单元格,但问题是在我的单元格中,只有一个视图可用。因此,当它突出显示单元格时,Red Color View 将从单元格中消失。

那么我将如何在选择 tableView 后显示 红色视图

此代码的链接是 https://github.com/anupgupta-arg/ios-Swift-tableViewSelect

现在我的细胞设计是

【问题讨论】:

不使用视图,您可以使用选定单元格的背景颜色 @Anup Gupta:你能展示一下你的细胞的设计吗? @iPeter 检查我的手机设计 @Khushbu 我不想更改单元格颜色,我只想选择单元格,然后红色视图始终显示它没有隐藏在突出显示的单元格后面。 @AnupGupta 为什么你把这个额外的 uiview 用于突出显示的单元格?你能解释一下吗? 【参考方案1】:

我建议使用带有纯红色图像的 UIImageView 而不是 UIView。 请参阅我的示例代码。我在代码方面做得不多,一切都是通过故事板实现的。请查看链接的图片以了解解决方案。

Prototype Cell 它有一个标签,UIImage 和 UIView,背景颜色为红色。我设置的 UIImage 为一些纯色的图像。

有了这个我的表格视图看起来像: TableView without ant selection

[TableView with selection]可以看到UIImageView不受单元格选择影响,UIView受到影响。3

【讨论】:

是的,ImageView 可以完美运行我知道这一点。但在我有一个颜色列表显示在那里所以我正在寻找最佳解决方案。【参考方案2】:

在您的 SimpleTableViewCell 中使用此方法:

override func setSelected(_ selected: Bool, animated: Bool) 
          super.setSelected(selected, animated: animated)
        centerView.backgroundColor = .red
      

当在表格视图中选择一个单元格时,它会将其所有子视图的背景颜色更改为清除颜色,这就是为什么每次都会更改红色。

这只是在每次发生时重置它的颜色。

如果您有多个视图,请改用它:

override func setSelected(_ selected: Bool, animated: Bool) 
          contentView.backgroundColor = .gray
      

这不会调用 super,因此不会出现问题。

【讨论】:

是的,这让我很恼火。你的答案是正确的,但是如果在某个位置有不同颜色的视图,那么如何处理呢? 不要调用super的setSelected,在同一个方法改变选择状态的时候自己改变c​​ontentView的背景色。【参考方案3】:

使用multipleSelectedBackgroundView 选择状态,并将您的另一个视图(红色的)放在 contentView 中。

【讨论】:

【参考方案4】:

如果您只想更改单元格的选定颜色,那么试试这个

目标-C:

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];

斯威夫特:

let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.red
cell.selectedBackgroundView = bgColorView

【讨论】:

我不想更改单元格颜色,我只想选择单元格,然后红色视图始终显示它没有隐藏在突出显示的单元格后面。【参考方案5】:

如果您不想在选择 TableViewCell 时显示任何颜色。 然后按照以下步骤操作:

    从情节提要中选择您的 TableView Cell 转到属性检查器 从选择中选择None 选项。

For storyboard reference

【讨论】:

如果他这样做,该复选框将不会更新

以上是关于TableView Swift 中的多选的主要内容,如果未能解决你的问题,请参考以下文章

IOS中的多选

Core Data TableView - 编辑模式下的多选

Vue 中Element的table多选表格实现单选,并且多选表格中表头的多选框不显示或隐藏

Vue 中Element的table多选表格实现单选,并且多选表格中表头的多选框不显示或隐藏

存储过程mysql中的多选语句

element-ui中el-table的多选默认选中