在 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() 上更新