检查UITextfield的数字间隔

时间:2018-06-07 20:26:47

标签: ios swift uitextfield

如何检查UITextField中的值是否是1到100之间的数字间隔,并且IF是该间隔中的数字IS以将值发送到另一个UIViewController?如果该值不在该间隔中,则显示警报。

我的其他控制器有一个var receivedValue = "",我会用它来填充UILabel。

这是我的代码:

import UIKit

class ChildViewController: UIViewController {
    @IBOutlet weak var insertNumberTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        insertNumberTextField.delegate = self
    }

    @IBAction func checkNumberIntervalButton(_ sender: UIButton) {
        if insertNumberTextField.text == "\(1..<100)"{
            print("Number is in interval 1 - 100.")

            navigationController?.popViewController(animated: true)

            dismiss(animated: true, completion: nil)
        } else {
            let alert = UIAlertController(title: "Try again", message: "Sorry but this numer is not in the inverval 1 - 100. Try again.", preferredStyle: .alert)

            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

            present(alert, animated: true, completion: nil)

            insertNumberTextField.text = ""

            print("Number is not in the inverval 1 - 100.")
        }
    }
}

extension ChildViewController: UITextFieldDelegate {
    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)
    }
}

1 个答案:

答案 0 :(得分:2)

将文本字段的文本转换为Int并进行比较。

if let text = insertNumberTextField.text, let value = Int(text), (0 ..< 100).contains(value) {
    // number is between 1 and 100
} else {
    // show alert
}