1

我有一个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
    }
4

1 回答 1

2

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

于 2016-04-10T05:32:32.050 回答