У меня есть простое задание, но я, кажется, не могу это понять. У меня есть UIViewController
, который имеет 5 UITextFields
. 2 из них UITextFields
всегда видны. Другие 3 отображаются, когда пользователь нажимает UIButton
. Моя цель - отключить UIButton
, чтобы пользователю было очевидно, что он не может «добавить» больше UITextFields
после того, как ВСЕ из UITextFields
станут видимыми. Я пытался сделать это:
@IBAction func addTextFieldPressed(_ sender: UIButton) {
if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
addTextFieldButton.isEnabled = false
}
if thirdChoiceTextField.isHidden {
UIView.animate(withDuration: 0.2) {
self.thirdChoiceTextField.isHidden = false
}
}
else if forthChoiceTextField.isHidden {
UIView.animate(withDuration: 0.2) {
self.forthChoiceTextField.isHidden = false
}
}
else {
UIView.animate(withDuration: 0.2) {
self.fifthChoiceTextField.isHidden = false
}
}
}
Но это не работает. Вы можете добавить UITextFields
. Также есть UIButton
, который позволяет пользователю удалить 3 добавленных UITextField
. Итак, я должен убедиться, что, если отображаются все текстовые поля, UIButton
, ответственный за добавление дополнительных UITextFields
, будет отключен, но если какой-либо из UITextFields
будет удален (.isHidden = true
), кнопка должен быть включен еще раз.
ОБНОВЛЕНИЕ: Это код, который запускается после того, как пользователь нажимает кнопку «скрыть», и он в основном скрывает 3-й, 4-й или 5-й UITextField
@objc func hideTextField(_ sender: UIButton) {
if let field = sender.superview?.superview as? UITextField, !field.isHidden {
UIView.animate(withDuration: 0.2) {
field.text = ""
field.isHidden = true
}
}
}