gpt4 book ai didi

ios - UISlider 不更新 Swift 中的当前值

转载 作者:搜寻专家 更新时间:2023-10-30 22:08:53 25 4
gpt4 key购买 nike

我在 TableView 单元格内有一个 slider ,我正在尝试将标签的文本设置为 slider 的值。但是,文本未设置为更改后的 slider 值。我做错了什么?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()

if indexPath.section == 0 {

let slider = UISlider(frame: CGRectMake(0, 0, 320, 44))
slider.userInteractionEnabled = true
slider.minimumValue = 1
slider.maximumValue = 100
slider.value = 50
slider.continuous = true
cell.addSubview(slider)
println(cell.bounds)

let label = UILabel(frame: CGRectMake(260, -20, 100, 20))
var theValue = Int(slider.value)
label.text = "\(theValue)" + "mi."
cell.addSubview(label)
}

最佳答案

你可以使用一些技巧来做到这一点,首先你需要按照建议设置 UISlider 的目标,另一点是获取选定的行,你可以实现在 tag 属性中保存 indexPath.row,如下面的代码:

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

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell

let slider = UISlider(frame: CGRectMake(0, 0, 100, 44))
slider.userInteractionEnabled = true
slider.minimumValue = 1
slider.maximumValue = 100
slider.value = 50
slider.continuous = true

// set the target to respond to changes.
slider.addTarget(self, action: "sliderValueChanged:", forControlEvents: UIControlEvents.ValueChanged)

// save the indexPath.row
slider.tag = indexPath.row
cell.addSubview(slider)


let label = UILabel(frame: CGRectMake(105, 0, 100, 20))
var theValue = Int(slider.value)
label.text = "\(theValue)" + "mi."
cell.addSubview(label)

return cell
}

另一个问题是设置 UILabel 文本,您可以通过获取单元格内的准确 View 来实现,如以下代码所示:

func sliderValueChanged(sender: AnyObject) {

var slider = sender as! UISlider
let cell = self.tableView.cellForRowAtIndexPath(NSIndexPath(forRow: slider.tag, inSection: 0)) as UITableViewCell!

// If you know the exactly index
// var label = cell.subviews[4] as! UILabel
// label.text = "\(slider.value)"

// assuming you have only one `UILabel` inside your cell
for view in cell.subviews {
if let label = view as? UILabel {
label.text = "\(slider.value)"
}
}
}

在上面的代码中,我只在 UITableViewCell 中设置了准确的数字,以显示方式,但强烈推荐的方法是遍历所有 UIView 并找到你的 UILabel 就像这个问题中提出的方法一样 Find UILabel in UIView in Swift因为数字可以改变。

正如之前有人所说,通过 Interface Builder 设置自定义单元格更容易,但这取决于您。

希望对你有帮助

关于ios - UISlider 不更新 Swift 中的当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952496/

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