如何在Swift中启用当前禁用的按钮

时间:2017-01-25 20:55:38

标签: ios swift

我的iOS应用程序中有一个操作按钮(使用Swift 3),我猜这在技术上是一个工具栏项目。

我现在使用

禁用viewWillAppear()中的按钮
actionButton.isEnabled = false

然后我尝试在选择图像后启用它:

func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imageView.image = image
        imageView.contentMode = .scaleAspectFit
    }
    dismiss(animated: true, completion: nil)
    actionButton.isEnabled = true
    print("selected an image in picker")
}

我可以看到我的print语句以及正在选择的图像和活动视图控制器解除,正如预期的那样。但是,我的actionButton保持禁用状态。

任何想法为什么?我对Swift很新!

2 个答案:

答案 0 :(得分:6)

在视图控制器加载之前,每次都会调用

viewWillAppear()。当您关闭imagePicker时,返回显示原始viewController,actionButton.isEnable = true将再次被调用,并且它会再次将您的viewDidLoad()覆盖为false。如果我是你,我会禁用{{1}}中的按钮,该按钮只被调用一次。

答案 1 :(得分:0)

尝试执行更改主线程中UI的代码,如下所示:

DispatchQueue.main.async {
    actionButton.isEnabled = true
}