更改UITableViewCell的编辑控件图像

时间:2012-05-01 10:02:41

标签: ios uitableview xcode4.2

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

提前致谢。

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

UITableViewCell的accessoryType属性具有UITableViewCellAccessoryCheckmark的可能值,该值将在单元格的右侧显示一个复选标记,用于记录选定/取消选择的状态。

其他选项是UITableViewCellAccessoryDisclosureIndicator,它是一个指向右边的雪佛龙,以及UITableViewCellAccessoryDe​​tailDisclosureButton,它在电话应用程序的最近通话记录中创建了一个小蓝色按钮。

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

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

答案 2 :(得分:0)

覆盖自定义单元格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;
                }
            }
        }
    }
}