【问题标题】:How can I get a number input from a TextField?如何从 TextField 获取数字输入?
【发布时间】:2018-04-04 04:11:05
【问题描述】:

我会直接回答这个问题。

var a = 0 
var b = 20

我希望用户在TextField 中输入数字,然后我可以将该数字保存到变量 A 中。然后我想做一个 if 语句,其中

if a == b {
    //code
}

我遇到的问题是从文本字段中获取该数字输入。

【问题讨论】:

标签: swift


【解决方案1】:

您可以检查文本字段中的输入以获取数字

Swift4

let text = textField.text ?? ""
guard let number = Int(text) else {
    print("Must be input the number")
    return
}
// Do your task with number
a = number

【讨论】:

    【解决方案2】:

    试试这个类函数

    class SourceVC: UIViewController
    {
        @IBOutlet weak var sampleTF: UITextField!{
            didSet{
                sampleTF.delegate = self
            }
        }
        /// TF value
        var a : Int = 0
        var b : Int = 20
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        /// Assuming this button action to get Value from TF
        @IBAction func naviagteToDestination(_ sender: Any)
        {
            a = Int((sampleTF.text?.trimmingCharacters(in: .whitespaces))!)!
    
            if a == b {
                print("Execute")
            }
            else{
                print("Dont Execute")
            }
        }
    }
    
    extension SourceVC : UITextFieldDelegate
    {
        /// This will Limit TF to accept only Numbers
        func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
        {
            let allowedCharacters = CharacterSet.decimalDigits
            let characterSet = CharacterSet(charactersIn: string)
            return allowedCharacters.isSuperset(of: characterSet)
        }
    }
    

    【讨论】:

    • 为什么要将guard 与强制展开结合使用?这没有任何意义。
    • 您的编辑更糟糕,因为现在如果输入的值不是有效的Int,应用程序将会崩溃。
    • 但是我已经使用字符集来确保在 TF 中输入的文本是 Int 值,但我仍然想知道如何使这个正确
    • 查看另一个答案以获取一个示例。基本上,避免导致强制展开的崩溃。
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多