swift Я хочу проверить, текстовое поле предупреждения больше 0 - PullRequest
0 голосов
/ 12 июня 2018

Я хочу, чтобы текст textField был больше 0, прежде чем я смогу подтвердить

У меня есть ссылка на этот пример

, но он не работает

Как я могу изменить следующий код лучше?

Есть ли более простой способ проверить охрану?

func addNewList() {
    let addAlert = UIAlertController(title: "新增列表", message: "請輸入列表名稱", preferredStyle: .alert)
    addAlert.addTextField { (textfied: UITextField) in
        textfied.placeholder = "列表名稱"
        textfied.addTarget(addAlert, action: #selector(addAlert.textDidChanged), for: .editingChanged)
    }

    let confirm = UIAlertAction(title: "確認", style: .default) { (action: UIAlertAction) in

        guard let name = addAlert.textFields?.first?.text else { return }

        let newList = List(name: name, completed: false)
        self.item?.lists.append(newList)

        let indexPath = IndexPath(row: self.listTableView.numberOfRows(inSection: 0), section: 0)
        self.listTableView.insertRows(at: [indexPath], with: .left)
    }

    let cancel = UIAlertAction(title: "取消", style: .cancel, handler: nil)

    addAlert.addAction(cancel)
    confirm.isEnabled = false
    addAlert.addAction(confirm)

    self.present(addAlert, animated: true, completion: nil)
}

extension UIAlertController {
    func checkItemName(_ text: String) -> Bool{
        return text.count > 0
    }

    @objc func textDidChanged() {
        if let name = textFields?.first?.text, let action = actions.last {
           action.isEnabled = checkItemName(name)
        }
    }
}

1 Ответ

0 голосов
/ 12 июня 2018

Я думаю, вы хотите знать, является ли текст в textField пустым или нет?В этом случае вы должны использовать эту проверку:

if let text = textField.text,!text.trimmingCharacters(in: .whitespaces).isEmpty {
  //The use the text here
}

Сначала будет проверена, есть ли текст в TextField.Если этот текст содержит только пробелы (""), текст не будет равен нулю, и text.count> 0 также пройдет.Так что в этом случае мы используем функцию trimmingCharacters(in:), которая удаляет эти пробелы.Затем проверка isEmpty говорит, является ли обрезанная строка пустой или нет.

В моем примере я хочу использовать строку в предложении if, поэтому я использовал "!"до проверки isEmpty.

...