gpt4 book ai didi

ios - Swift:原型(prototype)单元格中的步进器,如何刷新标签文本?

转载 作者:行者123 更新时间:2023-11-29 12:21:50 26 4
gpt4 key购买 nike

在我的应用中,我想添加一个步进器,以便用户可以将值从 1 增加到 100。

我可以让步进器显示,我已经添加了 Action ,但是 tableview 中的标签没有刷新...我是否需要在每次用户点击步进器时执行“self.tableView.reloadRowsAtIndexPaths”?

class SettingsOptionTableViewCell: UITableViewCell {

@IBOutlet weak var labelvalueforstepper: UILabel!
@IBOutlet weak var simpleStepper: UIStepper!
@IBOutlet weak var labelwithStepper: UILabel!

}

class SettingOptionsTableViewController: UITableViewController {

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

cell = tableView.dequeueReusableCellWithIdentifier("SettingOptionsCell3") as! SettingsOptionTableViewCell
cell.labelwithStepper.text = "Value:"
cell.simpleStepper.value = 1
cell.labelvalueforstepper.text = (cell.simpleStepper.value).description
cell.simpleStepper.wraps = false
cell.simpleStepper.autorepeat = true
cell.simpleStepper.maximumValue = 100

cell.simpleStepper.addTarget(self, action: "stepperValueChanged:", forControlEvents: UIControlEvents.ValueChanged)

}


func stepperValueChanged(sender: UIStepper) {

let pointInTable: CGPoint = sender.convertPoint(sender.bounds.origin, toView: self.tableView)
let cellIndexPath = self.tableView.indexPathForRowAtPoint(pointInTable)

if let myRowSection = cellIndexPath?.section {

if let myRow = cellIndexPath?.row {

var device_status: Int = Int(sender.value)

println(sender.value)
println(myRow)

segmentDeviceViewValueChange(myRow, userSelection: device_status)

let cell: SettingsOptionTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("SettingOptionsCell3", forIndexPath: cellIndexPath!) as! SettingsOptionTableViewCell
cell.labelvalueforstepper.text = device_status.description

}

}
}
}

最佳答案

与其让 TableView Controller 进入每个单元格并进行大量摆弄,不如让单元格负责保持步进器和标签同步。

向作为步进器值的单元格类添加一个属性。为更新步进器和标签的属性使用自定义 setter ,并使用返回当前步进器值的自定义 getter 。 UIAction 方法用于当步进器被点击时只需要担心将标签设置为正确的值。

如果您需要 TableView Controller 在步进器值更改时立即知道,请使用委托(delegate)协议(protocol)或发布值已更改的通知。

一旦您准备好所有代码,请确保单元中的所有 socket 都已连接,并且在点击步进器时会向单元发送一个 Action 。

此外,由于您只将 labelwithStepper 的文本设置为 “Value:”,因此您可以直接在 IB 中编辑标签,并少连接一个 socket 。

关于ios - Swift:原型(prototype)单元格中的步进器,如何刷新标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30412409/

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