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,在同一个方法改变选择状态的时候自己改变contentView的背景色。【参考方案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 中的多选的主要内容,如果未能解决你的问题,请参考以下文章
Core Data TableView - 编辑模式下的多选
Vue 中Element的table多选表格实现单选,并且多选表格中表头的多选框不显示或隐藏