【发布时间】:2017-10-05 12:20:52
【问题描述】:
如果UITextField 的值等于"Other",我正在尝试更新UIStackView 以便显示一个字段。这是我的代码:
@IBOutlet var stackView: UIStackView!
func updateView() {
print("UPDATING")
UIView.animate(withDuration: 0.25, animations: { () -> Void in
if(self.myTextField.text! == "Other") {
print("SHOWING")
self.stackView.arrangedSubviews[3].isHidden = false
} else {
print("HIDING")
self.stackView.arrangedSubviews[3].isHidden = true
}
print("Is hidden: \(self.stackView.arrangedSubviews[3].isHidden )")
})
示例输出如下所示:
> UPDATING
> HIDING
> Is hidden: true
> UPDATING
> SHOWING
> Is hidden: true
如您所见,isHidden 属性报告为true,无论上面的代码将其设置为什么。我真的不知道为什么会这样,但也许这里有人可以?有什么明显的检查吗? isHidden有什么不能更新的原因吗? (注意输出中没有出现错误)。
【问题讨论】:
-
如果我从字面上获取您的代码示例和您的描述,由于区分大小写,它不起作用 - “其他”(如您的描述)与“其他”(如示例)。您可能想考虑这个:
self.myTextField.text!.lowercaseString == "other". -
抱歉,这只是一个糟糕的描述,我会更新 - 请查看输出以获取证据
-
@Ben 你明白了吗? zisoft 的解决方案去掉了动画,所以对我不好。如果我删除动画块,一切都会按预期进行。
-
@Levi 我相信 zisoft 的回答确实允许动画(它似乎确实在查看代码),但是我实际上目前没有工作副本来证明这一点 - 抱歉!跨度>
-
没问题,我使用了一种解决方法,我在动画的完成块中将项目设置为显示/隐藏,而不仅仅是在动画块中我不喜欢这个解决方案,但它已修复错误
标签: ios swift uistackview