0

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

提前致谢。

4

3 回答 3

4

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

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

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

于 2013-01-30T17:23:59.253 回答
0

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

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

所以在设置好你的手机之后,

cell.textLabel.text = @"Selected";
cell.accessoryType = UITableViewCellAccessoryCheckmark;
return cell;
于 2012-05-01T13:03:39.967 回答
-1

覆盖自定义单元格 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;
                }
            }
        }
    }
}
于 2019-06-18T10:57:45.690 回答