Отключить UIButton после того, как UITextField больше не скрыт? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть простое задание, но я, кажется, не могу это понять. У меня есть 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
        }
    }
}

1 Ответ

0 голосов
/ 03 июля 2018

Отсутствует условие else.

@IBAction func addTextFieldPressed(_ sender: UIButton) {
    if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
        addTextFieldButton.isEnabled = false
    }
    else{
        addTextFieldButton.isEnabled = true
    }
    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

    }
  }
}

Обновление (попробуйте добавить это, чтобы включить кнопку)

@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
        }
    }

    if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
        addTextFieldButton.isEnabled = false
    }
    else{
        addTextFieldButton.isEnabled = true
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...