UITableView“批量选择”未在选择圈中显示选中的选中标记,显示右侧选中标记不在左侧

时间:2015-09-17 20:59:22

标签: ios swift uitableview

我试图在iOS8 Swift应用程序上重现此行为(请参阅下面的截图,“mail multiple select to delete”行为)。 当设置为“编辑”时,会显示左侧选择圈,但在选择时它们不会更改为蓝色复选标记。(没有任何可见的情况发生,或者它发生在右侧...屏幕外。 )

从各种谷歌搜索中我尝试将accessoryType设置为复选框,但是它出现在右侧(而不是左侧)。[这是一个老建议,是否还要添加一个复选标记?)

我已经搜索了这个样本(甚至下载并运行它并将其调整到我的代码附近,并且它可以工作)但是我看不到它和我的应用程序之间的差异。

一些数据点:

  • Xcode 7
  • iOS8 +(8和9测试)
  • Swift 2.0
  • tableview等的故事板配置
  • 自定义布局单元格。他们使用内容视图查看某些文本,外面没有任何内容。自动布局。
  • 不编辑时的单一选择(或者我相信)
  • 编辑时多重选择(以获得此效果。)
  • DataSource为大多数(不是所有)单元格返回canEdit“true”。圆圈仅显示在那些可编辑的匹配期望旁边。
  • 委托不返回任何“编辑样式”值。 (试过w /& w / o。)
  • 委托不会在“didSelect”处理程序中取消选择。
  • 当我尝试将accesoryType设置为didSelect中的Checkmark(许多帖子建议,但我没有在示例中看到它)时,它出现在右侧而不是左侧。

其他StackOverflow问题/答案暗示某些因素导致UITableView无法知道左侧的复选标记是不是右侧。我可以相信,但我找不到它。任何帮助表示赞赏。

所需效果(来自示例屏幕截图):

https://developer.apple.com/library/ios/samplecode/TableMultiSelect/Introduction/Intro.html

The blue  checkbox selection from sample

表格设置

Table Settings from Storyboard

表格单元格设置

Table Cell Settings from Storyboard

4 个答案:

答案 0 :(得分:15)

如果您的cellForRowAtIndexPath中有selectionStyle = .None,请将其删除。

我和你一样(使用Xcode 7,iOS9,Swift 2.0)。我在网上找到的大部分文章都是关于右侧的复选标记,我的故事板看起来很完美。我唯一的问题是,当我点击该行时,我无法在左侧显示复选标记。

通过您的帖子,我能够比较源代码并弄明白 - 谢谢!

答案 1 :(得分:2)

确保单元格的色调不是白色,否则您将在白色圆圈上获得白色复选标记...

答案 2 :(得分:0)

就我而言,它是已接受的答案以及故事板/ IB中的UITableViewCell选择集的组合。我将Selection设置为“None”以防止选择突出显示。如果要显示编辑复选标记,则无法执行此操作。对于那些可能会在未来发现这一点的人来说,这只是一个额外的帮助!

答案 3 :(得分:0)

我解决了这个问题。 将selectionStyle设置为默认值。

我在子类UITableViewCell中的方法。

override func awakeFromNib() {
        super.awakeFromNib()

        //Here I solved problem
        let bgView = UIView()
        bgView.frame = self.frame
        bgView.backgroundColor = selectionColor //Here your color

        self.selectedBackgroundView? = bgView
    }