Я хочу, чтобы текст 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)
}
}
}