Есть ли способ показать UIelement, который ранее был скрыт в более ранних строках кода после нажатия кнопки на том же VC в Swift?

У меня много элементов пользовательского интерфейса в VC, включая метки, текстовые поля и кнопку. В функции viewDidLoad () большинство элементов пользовательского интерфейса изначально скрыты. Я успешно запрограммировал UIButton на VC для изменения текста метки и свойств заголовка кнопки в зависимости от того, какой вопрос задается. Однако, когда я пытаюсь установить свойство текста для метки или текстового поля, которое ранее было скрыто, оно не отображается. Я видел на веб-сайте Apple dev что-то о представлении hiddenOrHasHiddenAncestor, но не уверен, что это решение. Есть ли легкое решение?

Я попытался создать логическую переменную как var firstQuestionAsked = false, а затем установить для нее значение true в фрагменте кода, когда я хочу, чтобы элементы пользовательского интерфейса отображались снова, и установил код viewDidLoad на оператор if, чтобы, если Bool имеет значение false, элементы скрыты, но это не сработало.

// Это мой код в функции viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()

        aboveTopTextPrompt.text = aboveTopPrompt1
        topTextfield.placeholder = "Ex: 2.98"
        besideTopTextLabel.isHidden = true
        underTopTextLabel.isHidden = true
        aboveBottomTextPrompt.isHidden = true
        bottomTextfield.isHidden = true
        underBottomTextLabel.isHidden = true
        bottomFloatingLabel.isHidden = true
        darkButton.setTitle(nextTitle, for: .normal)
    }
}

// Это часть моего кода, которая не работает (в кнопке IBAction)

@IBAction func darkButtonPressed (_ отправитель: UIButton) {

    if aboveTopPromptIndex == 1 {
        aboveTopTextPrompt.text = aboveTopPrompt2
        topTextfield.placeholder = "Ex: 76.00"
        besideTopTextLabel.isHidden = true
        underTopTextLabel.text = "string"
        aboveBottomTextPrompt.text = "string"
        bottomTextfield.isHidden = true
        underBottomTextLabel.isHidden = true
        bottomFloatingLabel.isHidden = true
        darkButton.setTitle(nextTitle, for: .normal)
        aboveTopPromptIndex = 2
    } else if aboveTopPromptIndex == 2 {
        performSegue(withIdentifier: "darkViewToABC", sender: self)
    } else if (aboveTopPromptIndex == 5 || aboveTopPromptIndex == 6 {
        aboveTopPromptIndex = 7
        aboveTopTextPrompt.text = aboveTopPrompt7
        topTextfield.placeholder = "string"
        besideTopTextLabel.text = "string"
        underTopTextLabel.text = "string"
        aboveBottomTextPrompt.text = "string"
        bottomTextfield.placeholder = "string"
        underBottomTextLabel.text = "string"
        bottomFloatingLabel.text = "string"
        darkButton.setTitle(calculateTitle, for: .normal)
    }

Строки, которые я установил для элементов пользовательского интерфейса, остаются скрытыми. Я не показывал весь свой код, чтобы избежать избыточности, но в основном любой заполнитель или текстовое свойство, которые были скрыты ранее, не становятся видимыми, когда я этого хочу, и мне нужно, чтобы они отображались для одного из вопросов, как показано в последнем else если заявление.


person 8836iosuiux    schedule 24.01.2019    source источник


Ответы (1)


someUIElement.isHidden = false сделает его видимым. Значение isHidden определяет, является ли вид скрытым или нет. Он не будет изменен автоматически ни в коем случае. Поэтому, как только вы установите его на true, он больше не будет отображаться, пока вы явно не установите его обратно на false

person Ricky Mo    schedule 24.01.2019