Как проверить, есть ли у каждого UITextField в массиве пользовательский ввод? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть список UITextFields в Array для пользователей, чтобы вводить номера телефонов.Когда я нажимаю кнопку «Отправить», она соединяется с моим сервером, чтобы отправить автоматическое сообщение на указанные номера.Эта часть работает хорошо.Теперь я хочу проверить, какой из UITextFields имеет телефонный номер, и проверить, имеет ли он префикс +, прежде чем он подключится к моему серверу.Если у любого из UITextField есть номер телефона без префикса +, цвет границы этого UITextField должен изменить цвет.Если у UITextField нет номера телефона, никаких действий предпринимать не нужно.Как мне добиться этого?

Это часть кода, в которой мне нужна помощь


    @IBAction func sendbutton(_ sender: Any) {

        var numArray: Array<Any>

        numArray = [phonenumber.text!, phonenumber1.text!, phonenumber2.text!, phonenumber3.text!]

        let myColor = UIColor.red

        for num in numArray {
            if (num as AnyObject).hasPrefix("+") {
                print("Has + symbol")

            } else {
                print("Does Not Have Symbol")

            }
        }

Ответы [ 3 ]

1 голос
/ 27 мая 2019

Вы можете пройти через array из textFields, и для каждого textField подтвердите, text для первого character равно "+".Если не установлено, то borderColor.

var textFields = [phonenumber, phonenumber1, phonenumber2, phonenumber3]
var numArray = [String]()

textFields.forEach {
    if let text = $0.text, text.first == "+" {
        numArray.append(text)
        $0.layer.borderWidth = 0.0 //To reset the textField if it didn't validate earlier
    } else {
        $0.layer.borderColor = UIColor.red.cgColor
        $0.layer.borderWidth = 1.0
    }
}
0 голосов
/ 27 мая 2019

Пожалуйста, попробуйте это решение, я буду работать.

private var arrTextFilds = [phonenumber.text ?? "", phonenumber1.text ?? "", 
phonenumber2.text!, phonenumber3.text ?? ""]
private var numArray : [String] = []
arrTextFilds {
   if let text = $0.text,text.hasPrefix(“+”) {
       numArray.append(text)
       $0.layer.borderWidth = 0.0 
   } else {
      $0.layer.borderColor = UIColor.red.cgColor
      $0.layer.borderWidth = 1.0
  }
}
0 голосов
/ 27 мая 2019

Я не думаю, что вы должны зацикливаться на массиве строк, вместо этого зацикливаться на текстовых полях, чтобы вы могли напрямую установить цвет

var textFields: Array<UITextField> = [phonenumber, phonenumber1, phonenumber2, phonenumber3]
var numbersToSend = [String]()
let myColor = UIColor.red

for textField in textFields {
    let number = textField.text ?? ""
    if validatePhoneNumber(number) { //extract validation into separate function for clarity
        numbersToSend.append(number)
    } else {
        textField.backgroundColor = myColor //or whatever property you want to change
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...