gpt4 book ai didi

ios - 在表格 View 编辑模式下修改重新排序控件图标

转载 作者:行者123 更新时间:2023-11-28 06:47:08 25 4
gpt4 key购买 nike

我想为表格 View 编辑模式中出现的汉堡包图标使用自定义颜色,甚至最好使用自定义图像。我在最初在 Objective-C 中的旧线程中找到了这个 Swift 代码片段(可在此处找到:Change default icon for moving cells in UITableView):

override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)

if editing {
for view in subviews as [UIView] {
if view.dynamicType.description().rangeOfString("Reorder") != nil {
for subview in view.subviews as [UIImageView] {
if subview.isKindOfClass(UIImageView) {
subview.image = UIImage(named: "yourimage.png")
}
}
}
}
}
}

为了适应我的 TableViewController,我将开始循环的行更改为:for view in tableView.subviews as [UIView] { 这似乎有效,但将找不到描述为“Reorder”的 View 。此后有更改吗?

我会在旧线程中询问,但由于声誉原因,我还不允许。

非常欢迎任何见解!

编辑:我可以通过将上面的代码更改为来更改图像:

override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)

if editing {
for cell in tableView.visibleCells {
for view in cell.subviews {
if view.dynamicType.description().rangeOfString("Reorder") != nil {
for subview in view.subviews as! [UIImageView] {
if subview.isKindOfClass(UIImageView) {
subview.image = UIImage(named: "yourimage.png")
//subview.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
}
}
}
}
}
}
}

然而,有一个错误,当向下滚动时,并不是所有的图标都会被改变。一些单元格仍将具有原始图标。我想这与重复使用的细胞有关。有什么解决办法吗?

编辑 2:我通过确保在 cellForRowAtIndexPath 方法中执行相同的图像替换逻辑来解决上述问题。此外,我正在检查图像是否已经更改,因为如果之前有图像,图像会有奇怪的偏移。

override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)

if editing {
for cell in tableView.visibleCells {
setEditingAccessoryView(forCell: cell)
}
}
}

func setEditingAccessoryView(forCell cell: UITableViewCell) {
for view in cell.subviews {
if view.dynamicType.description().rangeOfString("Reorder") != nil {
for subview in view.subviews as! [UIImageView] {
if subview.isKindOfClass(UIImageView) {
if subview.image != UIImage(named: "yourImage.png") {
subview.image = UIImage(named: "yourImage.png")
//subview.frame = CGRect(x: 20, y: 20, width: 20, height: 20)
}
}
}
}
}
}

在 cellForRowAtIndexPath 中:

if editing {
setEditingAccessoryView(forCell: cell)
}

最佳答案

很高兴我们解决了您的问题。对于您的最后一个问题,我建议您在 cellForRowAtIndexPath: 中显式调用替换逻辑,以在每次显示单元格时强制调用您的代码。

(顺便说一句,日志记录始终是解决令人费解的问题的好方法,)

关于ios - 在表格 View 编辑模式下修改重新排序控件图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com