【问题标题】:Change editing control image for UITableViewCell更改 UITableViewCell 的编辑控件图像
【发布时间】:2012-05-10 21:22:16
【问题描述】:

是否可以更改 UITableViewCell 的多行选择的编辑控件图像。如果可以通过 UITableViewCell 的任何默认功能或者我们必须自己自定义它,如果可以的话,任何人都可以给我任何参考。

提前致谢。

【问题讨论】:

    标签: ios uitableview xcode4.2


    【解决方案1】:

    OP 实际上是想更改编辑控件。这是当您将其更改为编辑模式时出现在单元格左侧的加号或减号。您实际上无法更改图像,但您可以做的是假更改图像,以下是步骤:

    1. 创建一个 UITableViewCell 子类。
    2. 重写 initWithCoder:。在该方法中,将 UIView 添加到 self.backgroundView。
    3. 覆盖 willTransitionToState:。您实际上不需要在此处添加任何内容,但添加此方法覆盖会阻止单元格添加系统编辑控件。
    4. 将您想要作为编辑控件的图像作为子视图添加到 self.backgroundView。

    现在,当表格进入编辑模式并且单元格将内容向右移动时,您将看到添加到背景视图中的图像。这样做的副作用是当您触摸新图像时它不会收到触摸。对于我的情况,我将 tableView.allowSelectionDuringEditing 设置为 YES 并在我的表视图控制器中处理 tableView:didSelectRowAtIndexPath: 中的选择。

    【讨论】:

      【解决方案2】:

      UITableViewCell 的 accessoryType 属性有一个可能的值 UITableViewCellAccessoryCheckmark,它将在单元格的右侧显示一个复选标记,用于注意选中/取消选中状态。

      其他选项是 UITableViewCellAccessoryDisclosureIndicator,它是一个指向右侧的 V 形,以及 UITableViewCellAccessoryDe​​tailDisclosureButton,它使蓝色的小按钮就像电话应用程序的“最近通话记录”中一样。

      所以在设置好你的单元之后,

      cell.textLabel.text = @"Selected";
      cell.accessoryType = UITableViewCellAccessoryCheckmark;
      return cell;
      

      【讨论】:

        【解决方案3】:

        覆盖自定义单元格 setEditing 应该可以工作。为我工作。但是我仍然无法弄清楚,为什么在重新排序时它会回到默认图像。

        欢迎任何建议:)

        private var myEditImage = UIImage(named: "some-image")
        
        override func setEditing(_ editing: Bool, animated: Bool) {
            super.setEditing(editing, animated: animated)
        
            for subViewA in self.subviews {
                if subViewA.classForCoder.description() == "UITableViewCellEditControl" {
                    if let subViewB = subViewA.subviews.last {
                        if subViewB.isKind(of: UIImageView.classForCoder()) {
                            let imageView = subViewB as! UIImageView;
                            imageView.contentMode = .scaleAspectFit
                            imageView.image = self.myEditImage;
                        }
                    }
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-11
          • 2010-10-15
          • 2011-12-08
          • 1970-01-01
          • 2016-12-26
          • 1970-01-01
          • 2019-01-20
          • 1970-01-01
          相关资源
          最近更新 更多