在 Swift 中的同一个 VC 上点击按钮后,有没有办法显示以前隐藏在早期代码行中的 UIelement?
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?
我在 VC 上有许多 UI 元素,包括标签、文本字段和按钮。在 viewDidLoad() 函数中,大多数 UI 元素最初是隐藏的。我已成功对 VC 上的 UIButton 进行编程,以根据所问的问题更改标签文本和按钮标题属性。但是,当我尝试为之前隐藏的标签或文本字段设置文本 属性 时,它不会显示出来。我在 apple dev 网站上看到了一些关于 hiddenOrHasHiddenAncestor 视图的内容,但我不确定这是否是解决方案。有没有简单的解决方法?
我尝试创建一个布尔变量作为 var firstQuestionAsked = false,然后在我希望 UI 元素再次显示时在代码块中将其设置为 true 并将 viewDidLoad 代码设置为 if-statement 这样,如果 Bool 为假,元素将被隐藏,但这不起作用。
// 这是我在 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 语句中。
someUIElement.isHidden = false
将使它可见。
isHidden
值决定视图是否隐藏。它不会以任何方式自动更改。所以一旦你将它设置为 true
,它就不会再次可见,直到你明确地将它设置回 false
我在 VC 上有许多 UI 元素,包括标签、文本字段和按钮。在 viewDidLoad() 函数中,大多数 UI 元素最初是隐藏的。我已成功对 VC 上的 UIButton 进行编程,以根据所问的问题更改标签文本和按钮标题属性。但是,当我尝试为之前隐藏的标签或文本字段设置文本 属性 时,它不会显示出来。我在 apple dev 网站上看到了一些关于 hiddenOrHasHiddenAncestor 视图的内容,但我不确定这是否是解决方案。有没有简单的解决方法?
我尝试创建一个布尔变量作为 var firstQuestionAsked = false,然后在我希望 UI 元素再次显示时在代码块中将其设置为 true 并将 viewDidLoad 代码设置为 if-statement 这样,如果 Bool 为假,元素将被隐藏,但这不起作用。
// 这是我在 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 语句中。
someUIElement.isHidden = false
将使它可见。
isHidden
值决定视图是否隐藏。它不会以任何方式自动更改。所以一旦你将它设置为 true
,它就不会再次可见,直到你明确地将它设置回 false