gpt4 book ai didi

ios - 如果 UIStepper 在 Swift 4 中以编程方式点击,如果它们都在 UITableViewCell 中,如何更改 UILabel 的文本?

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

Swift 4:我有一个静态单元格(分组样式)。我只是将一个 UILabel 和一个 UIStepper 添加到单元格中。现在我想在点击 UIStepper 时更改 UILabel 的文本。就像图片一样:

Picture 1

这是我的代码:

if indexPath.section == 0 {
cell.textLabel?.text = "\(first[indexPath.row])"


let step = UIStepper()
let label = UILabel()

func labelValueChanged(sender:UIStepper!) {
label.text = "\(Int(step.value))"
}

cell.addSubview(step)
step.translatesAutoresizingMaskIntoConstraints = false
step.centerYAnchor.constraint(equalTo: cell.centerYAnchor).isActive = true
step.widthAnchor.constraint(equalToConstant: 94).isActive = true
step.heightAnchor.constraint(equalToConstant: 29).isActive = true
step.rightAnchor.constraint(equalTo: cell.rightAnchor, constant: -30).isActive = true
step.addTarget(self, action: #selector(labelValueChanged), for: .valueChanged)



cell.addSubview(label)
label.text = "0"
label.translatesAutoresizingMaskIntoConstraints = false
label.centerYAnchor.constraint(equalTo: cell.centerYAnchor).isActive = true
label.widthAnchor.constraint(equalToConstant: 50).isActive = true
label.heightAnchor.constraint(equalToConstant: 21).isActive = true
label.rightAnchor.constraint(equalTo: cell.rightAnchor, constant: -124).isActive = true

}

如果在单元格内添加了 labelValueChanged 函数,将会出现错误:Argument of '#selector' cannot refer to local function 'labelValueChanged(sender:)'

Picture

但如果在单元格外添加了 labelValueChanged 函数,标签和 UIStepper 的值将不可用。

有什么办法可以实现吗?任何建议,将不胜感激。谢谢。

最佳答案

Is there any way to make it happen?

一种方法是使用步进器的 tag 属性来存储单元格的行号。然后 View Controller 可以获得步进器的 tag 并知道受影响的行。不过,这并不理想,因为它不太适合包含多个部分的表格。

There will be an error if the labelValueChanged function was added inside of the cell: Argument of '#selector' cannot refer to local function 'labelValueChanged(sender:)'

我不太清楚您为什么会遇到这个问题,但您当然可以将 IBAction 方法添加到自定义表格单元格类,将步进器的目标设置为单元格,然后将步进器的操作设置为该方法。而且您不需要以编程方式设置目标和操作——您可以在 Storyboard编辑器中配置它们。一个好的策略是让单元格将实际工作委托(delegate)给某个 Controller 对象,可能是 View Controller 。将步进器的目标设置为单元格可让单元格调用 Controller 中的方法,该方法包含比简单操作(只有 sender 参数)更多的参数,因此您可以传递行和部分、步进值如何变化,以及您可能需要的任何其他内容。

关于ios - 如果 UIStepper 在 Swift 4 中以编程方式点击,如果它们都在 UITableViewCell 中,如何更改 UILabel 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893385/

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