Так что немного сейчас я пытался понять это без везения. Что я пытаюсь сделать, как это идет ...Имея некоторые проблемы с проверкой, пусто ли текстовое поле в поле оповещения
- Действие листов всплывает и опция сливают, которая вызывает окно предупреждения
- TextField в окне предупреждения просит назвать колоду
- Имя вводится , «OK» используется, и segue выводит пользователя на следующий экран.
- Если текстовое поле пуст, выведите еще одно окно с предупреждением о том, чтобы ввести правильное имя.
Теперь я хотел проверить, было ли это текстовое поле в поле оповещения пустым или нет, поэтому в мою функцию showAlertTapped была добавлена контрольная переменная, чтобы проверить, пустое это поле или нет. Использовал оператор if либо для segue, либо для всплывающего окна второго предупреждения. Моя проблема заключается в том, что появляется второе поле предупреждения с просьбой ввести допустимое имя, пустое или нет. Я попытался изменить некоторые вещи вокруг, такие как начальная переменная проверки bool, а также переключение textField.text == "" в textField.text == ноль, но все, что было сделано, повторялось оба раза без отображения окна предупреждения. Пара других вещей, которые я пробовала, у меня перевернулась, но конечный результат всегда был один и тот же: либо переигрывать оба раза, либо второй предупреждающий ящик в оба раза. Так что я застрял. Я собираюсь опубликовать код, чтобы было легче увидеть, полностью ли я чего-то не хватает, и заранее извиняюсь, если мое форматирование отключено для этого сообщения, или если мой код не такой аккуратный, как должен быть. Я все еще новичок и учился, когда я ухожу. Поэтому, если у меня что-то неаккуратное или неправильное форматирование, я бы хотел его исправить. Спасибо за ваше время.
func showAlertTapped() {
var check = true
//Create the AlertController
let firstAlert: UIAlertController = UIAlertController(title: "New questions deck", message: "Enter a name for your questions deck", preferredStyle: .Alert)
//Create and add the Cancel action
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
}
firstAlert.addAction(cancelAction)
let saveAction: UIAlertAction = UIAlertAction(title: "Save", style: .Default) { action -> Void in
if check == true {
self.shouldPerformSegueWithIdentifier("saveSegue",sender: self)
}
else{
let alert: UIAlertController = UIAlertController(title: nil, message: "Please enter a valid name", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
}))
//Present the AlertController
self.presentViewController(alert, animated: true, completion: nil)
}
}
firstAlert.addAction(saveAction)
//Add a text field
firstAlert.addTextFieldWithConfigurationHandler { textField -> Void in
if textField.text == "" {
check = false
}
textField.textColor = UIColor.blueColor()
}
//Present the AlertController
self.presentViewController(firstAlert, animated: true, completion: nil)
}
Вместо того, чтобы отвечать на ваш вопрос, я собираюсь предложить вам изменения в потоке пользовательского интерфейса - появление модального оповещения раздражает - пользователь должен нажать, чтобы подтвердить его, а затем, поскольку вы не можете предотвратить отклонение UIAlertController, он будет затем нужно перерисовать. Хотя это немного больше работы, вы должны создать свой собственный контроллер представления для управления модальным диалогом, который собирает имя; это дает вам гораздо лучший контроль над пользовательским интерфейсом, и вы можете просто отключить кнопку «ОК», пока текстовое поле не будет иметь контент, используя делегат текстового поля. – Paulw11