在 Swift 中的同一个 VC 上点击按钮后,有没有办法显示以前隐藏在早期代码行中的 UI 元素?

Posted

技术标签:

【中文标题】在 Swift 中的同一个 VC 上点击按钮后,有没有办法显示以前隐藏在早期代码行中的 UI 元素?【英文标题】:Is there a way to show a UIelement that was previously hidden in earlier lines of code after a button has been tapped on the same VC in Swift? 【发布时间】:2019-06-17 16:52:50 【问题描述】:

我在 VC 上有许多 UI 元素,包括标签、文本字段和按钮。在 viewDidLoad() 函数中,大部分 UI 元素最初是隐藏的。我已经成功地对 VC 上的 UIButton 进行了编程,以根据所问的问题更改标签文本和按钮标题属性。但是,当我尝试为以前隐藏的标签或文本字段设置文本属性时,它不会显示备份。我在苹果开发网站上看到了一些关于 hiddenOrHasHiddenAncestor 视图的信息,但不确定这是否是解决方案。有没有简单的解决方法?

我尝试创建一个布尔变量作为 var firstQuestionAsked = false,然后在我希望 UI 元素再次显示时在代码块中将其设置为 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(_ sender: 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)
    

我为 UI 元素设置的字符串仍然隐藏。我没有显示我的所有代码以避免冗余,但基本上,以前隐藏的任何占位符或文本属性在我想要的时候都不会变得可见,我确实需要它们显示其中一个问题,如最后一个 else 所示if 语句。

【问题讨论】:

【参考方案1】:

someUIElement.isHidden = false 将使其可见。 isHidden 值确定视图是否隐藏。它不会以任何方式自动更改。因此,一旦将其设置为true,它就不会再次可见,除非您将其明确设置回false

【讨论】:

以上是关于在 Swift 中的同一个 VC 上点击按钮后,有没有办法显示以前隐藏在早期代码行中的 UI 元素?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 tableView 未在 reloadData() 上更新

请问下面的图片左上方的两个按钮加中间竖线用vc++中的MFC怎么去实现?完成后,另赠100分。

Swift 3 - 将数据从一个视图传递到另一个视图

在VC中 请教如何删除一个button按钮

按钮是不可点击的 swift

我们如何在 Swift 中单击第一个 VC 时打开标签栏