【问题标题】:UITableView "bulk select" not showing selected checkmarks in the selection circles, showing right side checkmark not left sideUITableView“批量选择”未在选择圈中显示选定的复选标记,显示右侧复选标记而不是左侧
【发布时间】:2015-09-17 20:59:22
【问题描述】:

我正在尝试在 iOS8 Swift 应用程序上重现此行为(参见下面的屏幕截图,“邮件多选删除”行为)。 当设置为“编辑”时,会显示左侧的选择圆圈,但在选择时它们不会变为蓝色复选标记。(没有任何可见的事情发生,或者它发生在右侧......屏幕外。 )

从各种 Google 搜索中,我尝试将附件类型设置为复选框,但它出现在右侧(而不是左侧)。[这是旧的建议,添加复选标记仍然是采取的方法吗?]

我已经搜索过这个示例(甚至下载并运行它并调整它更接近我的代码,并且它可以工作)但我看不到它和我的应用程序之间的差异。

一些数据点:

  • Xcode 7
  • iOS8 +(在 8 和 9 上测试)
  • 斯威夫特 2.0
  • tableview的Storyboard配置等
  • 自定义布局单元格。他们将内容视图用于某些文本,而不是外部。自动布局。
  • 不编辑时单选(或者我相信)
  • 编辑时多选(以获得此效果。)
  • DataSource 对大多数(不是全部)单元格返回 canEdit "true"。圈子仅显示在那些可编辑的、符合预期的旁边。
  • Delegate 没有返回任何“编辑风格”值。 (尝试了 w/ 和 w/o。)
  • 委托不会在“didSelect”处理程序中取消选择。
  • 当我尝试在 didSelect 中将 accesoryType 设置为 Checkmark 时(许多帖子建议,但我在示例中没有看到),它出现在右侧而不是左侧。

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

想要的效果(来自示例截图):

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

表格设置

表格单元格设置

【问题讨论】:

    标签: ios swift uitableview


    【解决方案1】:

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

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

    通过您的帖子,我能够比较源代码并找出答案 - 谢谢!

    【讨论】:

    • 好收获。我在周末发现了这个,它是以前迭代中的一些杂散代码,删除它(允许显示选择)解决了这个问题。 (对我来说,这是在我的单元子班。)我正准备发布我自己的答案,但很高兴接受你的。顺便说一句:我很晚才注意到我没有看到明显的选择指示(以及没有复选标记),并意识到这可能是原因。要回答我上面自己的(其他)问题,无需设置复选标记,选择状态就可以了。
    【解决方案2】:

    确保单元格的色调不是白色,否则您会在白色圆圈上看到一个白色复选标记...

    【讨论】:

      【解决方案3】:

      在我的情况下,它是接受的答案以及故事板/IB 中设置的 UITableViewCell 选择的组合。我将选择设置为“无”以防止选择突出显示。如果您希望显示编辑复选标记,则不能这样做。只是对可能会在路上找到这个的人的额外帮助!

      【讨论】:

        【解决方案4】:

        我解决了这个问题。 将 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
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多