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

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

Я попытался создать булеву переменную как 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 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)
    }

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

1 Ответ

0 голосов
/ 24 января 2019

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

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