【问题标题】:convert TextField to Var Int (swift) [closed]将 TextField 转换为 Var Int (swift) [关闭]
【发布时间】:2017-03-24 14:44:00
【问题描述】:

嗨,我是快速编程的新手。我想获取文本字段的输入,将其转换为 int,然后使用该 int(减少它)。这是我的代码:

 @IBOutlet weak var minutes: UITextField!

 @IBOutlet weak var seconds: UITextField!

@IBOutlet weak var label_Timer: UILabel!

@IBAction func btn_Timer(_ sender: UITextField) {

    var min:Int = Int(minutes.text!)
    var sec:Int = Int(seconds.text!)

    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.timerRunning), userInfo: nil, repeats: true)

}

func timerRunning(){

    sec -= 1

//operate on min and sec here

}

【问题讨论】:

  • 好的,您的实际问题是什么?您发布的代码有什么问题?
  • 提示:一对牙套就像一个封闭的房间。该范围(room)内的任何声明变量在外部均不可见。
  • 我想将分钟和秒 (UItextField) 转换为 int 变量,以便我可以在 func timerRunning 中对它们进行操作
  • @vadian 我想将分钟和秒放入一个 int 变量中,我尝试在函数之外声明 var 但 XCode 说它不能在属性初始化程序中使用实例成员
  • 实际上你根本不需要变量minsec。在btn_Timer 中仅启动或停止计时器。在timerRunning() 中获取标签的值,将它们转换为Int,减少它们,将它们转换回String,然后将它们重新分配给标签。

标签: swift int textfield


【解决方案1】:

正如@vadian 在 cmets 中指出的那样,您需要将 minsec 声明为属性,以便可以从 timerRunning 方法访问它们。

另外,我建议您使用 nil 合并运算符 ?? 安全地解开 UITextField text 值和 Int 转换的结果。

@IBOutlet weak var minutes: UITextField!

@IBOutlet weak var seconds: UITextField!

@IBOutlet weak var label_Timer: UILabel!

var min = 0
var sec = 0

@IBAction func btn_Timer(_ sender: UITextField) {

    min = Int(minutes.text ?? "") ?? 0
    sec = Int(seconds.text ?? "") ?? 0

    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.timerRunning), userInfo: nil, repeats: true)

}

func timerRunning(){

    sec -= 1

    //operate on min and sec here

}

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多