【问题标题】:Multiple Selection In TableView SwiftTableView 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 用于突出显示的单元格?你能解释一下吗?

标签: ios swift uitableview


【解决方案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 时显示任何颜色。 然后按照以下步骤操作:

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

    For storyboard reference

    【讨论】:

    • 如果他这样做,该复选框将不会更新
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多