除了ViewDidLayoutSubviews()之外,无法取消隐藏按钮

时间:2016-04-10 05:02:55

标签: ios swift uibutton iboutlet viewdidlayoutsubviews

我有UIButton,有时只会出现。在viewDidLayoutSubviews我做了以下内容:

 override func viewDidLayoutSubviews() {
    super.viewWillLayoutSubviews()
    clearButtonOutlet.hidden = true

但是,当我尝试在其他地方执行clearButtonOutlet.hidden = false时,该按钮不会重新出现。

起初我觉得我的约束可能搞砸了,但这会让按钮重新出现:

override func viewDidLayoutSubviews() {
    super.viewWillLayoutSubviews()
    clearButtonOutlet.hidden = true
    clearButtonOutlet.hidden = false

为什么我不能让按钮重新出现在其他地方?

编辑1:我试图让按钮重新出现的地方:

func textFieldDidBeginEditing(textField: UITextField) {

    //some stuff
    switch textField.tag {

        //tag = 3 is the when I want the clear button to show
    case 3:
        //launch the date picker
        launchDatePicker(textField)

        //once DatePicker is launched, show the clear button
        clearButtonOutlet.hidden = false
    default: break
    }

1 个答案:

答案 0 :(得分:2)

将其设置为隐藏不会做任何事情,您需要让视图重绘。当您创建不在viewDidLayout中的按钮时,我会设置clearButton.hidden = true,或者当视图再次放置时(在iPad或横向上调整大小),它将始终隐藏。然后在我的textFieldDidBeginEditing方法中,我会像您一样设置clearButton.hidden = false,然后调用view.setNeedsLayout()强制它重新布局并绘制。