首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UITextField更改时,如何更改UIStepper值?

从UITextField更改时,如何更改UIStepper值?
EN

Stack Overflow用户
提问于 2016-03-14 06:19:13
回答 1查看 2.9K关注 0票数 0

我对这一切都很陌生,我找到了一些代码,让我理解了其中的一些语法。我正在尝试创建一个文本字段,让我输入一个值来更新步进器的值。stepper当前可以工作(更新uitextfield),但当我更改文本字段中的值时,它不会更新stepper的值,所以当我单击stepper时,它会恢复到我输入值之前的值……谁能告诉我为什么STracksValueDidChange和CTrackValueDidChange这两个函数有错误?

到目前为止,我的代码如下:

代码语言:javascript
复制
import UIKit

类ViewController: UIViewController {

代码语言:javascript
复制
@IBOutlet weak var STracks: UITextField!
@IBOutlet weak var STracksStepper: UIStepper!
@IBOutlet weak var CTracks: UITextField!
@IBOutlet weak var CTrackStepper: UIStepper!



override func viewDidLoad() {
    super.viewDidLoad()


    STracksStepper.autorepeat = true
    STracksStepper.maximumValue = 100.0
    STracksStepper.minimumValue = 2.0
    STracksStepper.stepValue = 2.0
    print(STracksStepper.value)
    STracks.text = "\(Int(STracksStepper.value))"
    STracksStepper.addTarget(self, action: "SstepperValueDidChange:", forControlEvents: .ValueChanged)
    STracks.addTarget(self, action: "STextValueDidChange:", forControlEvents: .ValueChanged)


    CTrackStepper.autorepeat = true
    CTrackStepper.maximumValue = 100.0
    CTrackStepper.minimumValue = 2.0
    CTrackStepper.stepValue = 2.0
    print(CTrackStepper.value)
    CTracks.text = "\(Int(CTrackStepper.value))"
    CTrackStepper.addTarget(self, action: "CstepperValueDidChange:", forControlEvents: .ValueChanged)
    CTracks.addTarget(self, action: "CTextValueDidChange:", forControlEvents: .ValueChanged)

}

//Steppers will update UITextFields
func SstepperValueDidChange(stepper: UIStepper) {

    let stepperMapping: [UIStepper: UITextField] = [STracksStepper: STracks]

    stepperMapping[stepper]!.text = "\(Int(stepper.value))"
}

func STracksValueDidChange(SText: UITextField) {

    let STextMapping: [UITextField: UIStepper] = [STracks: STracksStepper]

    STextMapping[SText]!.value = "(SText.text)"
}


func CstepperValueDidChange(stepper: UIStepper) {

    let stepperMapping: [UIStepper: UITextField] = [CTrackStepper: CTracks]

    stepperMapping[stepper]!.text = "\(Int(stepper.value))"
}


func CTrackValueDidChange(CText: UITextField) {

    let CTextMapping: [UITextField: UIStepper] = [CTracks: CTrackStepper]

    CTextMapping[CText]!.value = "(CText.text)"
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

EN

回答 1

Stack Overflow用户

发布于 2016-03-14 06:27:52

试试这样的东西。

代码语言:javascript
复制
CTrackStepper.value = Double(Textfield.text)

我不太确定您的代码中的映射是什么。

但是我不认为你需要它来改变值。

更新,我自己做了一个项目:

代码语言:javascript
复制
 import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textfield: UITextField!
    @IBOutlet weak var stepper: UIStepper!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func stepperValueChanged(sender: UIStepper) {
        textfield.text = String(sender.value)
    }

    @IBAction func valueChanged(sender: UITextField) {
        if Double(sender.text!) != nil {
            stepper.value = Double(sender.text!)!
        }
    }
}

对于steppervaluechanged和valuechanged,只需从uistepper和textfield拖动并选择action,然后将Anyobject更改为Uitextfield的Uistepper。

祝你好运:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35976596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档