ios – UISlider没有更新Swift中的当前值

ios – UISlider没有更新Swift中的当前值,第1张

概述我在表格视图单元格中有一个滑块,我正在尝试将标签的文本设置为滑块的值.但是,文本未设置为更改的滑块值.我究竟做错了什么? func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = UITableViewCell() 我在表格视图单元格中有一个滑块,我正在尝试将标签的文本设置为滑块的值.但是,文本未设置为更改的滑块值.我究竟做错了什么?
func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {    let cell = UItableVIEwCell() if indexPath.section == 0 {        let slIDer = UiSlider(frame: CGRectMake(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的目标,另一点是获取所选的行,你可以在tagPath属性中保存它.如下面的代码:
overrIDe func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {    let cell = tableVIEw.dequeueReusableCellWithIDentifIEr("Cell",forIndexPath: indexPath) as! UItableVIEwCell    let slIDer = UiSlider(frame: CGRectMake(0,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,20))    var theValue = Int(slIDer.value)    label.text = "\(theValue)" + "mi."    cell.addSubvIEw(label)    return cell}

另一个问题是设置UILabel文本,您可以通过获取单元格内部的完全视图来实现,如下面的代码所示:

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中的当前值全部内容,希望文章能够帮你解决ios – UISlider没有更新Swift中的当前值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存