gpt4 book ai didi

swift5 - 在 UIStepper 类中存储值

转载 作者:行者123 更新时间:2023-12-02 00:49:12 25 4
gpt4 key购买 nike

我的 UITableViewCells 中有步进器。我从其他答案中看到人们正在使用 UIStepper.tag 传递 indexPath.row ,但我的 UITableView 中有部分,我需要将 indexPath 直接保存在 UIStepper 类中。

extension UIStepper {

struct Save {
static var indexPath:IndexPath?
}

public var indexPath:IndexPath {
get{
return Save.indexPath!
}
set(newValue) {
Save.indexPath = newValue
}
}
}

我正在使用这段代码来存储 indexPath。在我的 cellForRow 我设置stepper.indexPath = indexPath,但我的 UIStepper 的 indexPath 始终是最后一个。

每个 UIStepper 都有最后一个 indexPath。

如果我有 4 行,则所有单元格的输出 UIStepper.indexPath.row 始终为 3。

如何解决?

最佳答案

我明白你想做什么。我不知道这是否是最佳解决方案,但您遇到的问题是因为该属性对于整个类都是静态的,因此当您为任何行设置值时,您之前拥有的内容将被覆盖。

当您使用 cellForRowAt 加载第一个单元格时,您将 indexPath 设置为 0-0。对于第二行,您将其设置为 0-1,依此类推。最后一行将其设置为当时的任何值,而您之前拥有的任何值都会丢失。换句话说,该值为所有实例共享(它是一个类属性)。

您需要的是一个实例属性,这样每个对象都有自己的内存来存储该值。您可以创建一个仅将 indexPath 属性添加到其定义中的 UIStepper 子类,而不是使用扩展,而是使用它。像这样的东西:

class CellStepper: UIStepper {
var indexPath: IndexPath?
}

然后,在 cellForRowAt 中将其设置为您需要的值。

我想你正在为每个步进器设置与 valueChanged 的目标相同的方法,当它被调用时,你可以使用发送器将它转换为 CellStepper 并且访问 indexPath 属性以了解更改了哪一行的步进器。

如果您想要示例代码,我可以详细说明。

关于swift5 - 在 UIStepper 类中存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033427/

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