如果尚未编辑图像,如何禁用按钮?

时间:2018-08-10 16:28:32

标签: swift button uiimage isenabled

我想尝试禁用发布按钮,直到用户选择了图像为止。

但是,我将默认图像设置为占位符。当文本字段中未填充信息时,我已经设法禁用了发布按钮。但是,我还没有找到立即禁用按钮的方法。希望我已经对自己做了解释。

Here's an image of my uiview

func handleBlancInformation(){
    address.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)
    breed.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)
    phone.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)

}


@objc func textFieldDidChange() {
    guard let address = address.text, !address.isEmpty,
            let breed = breed.text, !breed.isEmpty,
            let phone = phone.text, !phone.isEmpty,
            let image = imagePosted.image, !imagePosted.isEqual("placeholder.png")
        else {
        postButton.setTitleColor(UIColor.lightText, for: UIControlState.normal)
            postButton.isEnabled = false
            return
    }
    postButton.setTitleColor(UIColor.white, for: UIControlState.normal)
    postButton.isEnabled = true
}

4 个答案:

答案 0 :(得分:0)

据我了解,用户可以在加载视图时单击,而您想阻止此权限?

  

但是当他们第一次进入uiview时,他们可以单击发布按钮

如果这样,只需禁用viewDidLoad()或情节提要中的按钮即可。

override func viewDidLoad() {
    postButton.isEnabled = false
}

或取消选中“已启用”字段

enter image description here

要验证用户是否确实选择了图像(在加载视图之后),请检查Greg的answer

答案 1 :(得分:0)

我需要更多代码才能在此处提供确切的解决方案,但请这样考虑:

无论用户使用哪种方法来选择新图像,都应该在该位置启用“发布”按钮。

例如,假设您正在使用UIImagePickerViewController来处理图像拾取,则需要启用此方法内部的“发布”按钮,该按钮是 UIImagePickerControllerDelegate 的一部分:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
          //Enable button here
     } else {
          //Disable button here
     }
}

答案 2 :(得分:0)

尝试一下。使用bool作为状态来检查是否选择了天气图像。

var isImageSelected = false

override func viewDidLoad() { postButton.isEnabled = false }

检查图像是否被选中。选定图像时更改按钮启用属性。

if isImageSelected{
// Do Your Work
}

答案 3 :(得分:0)

这是我设法使按钮从用户进入此选项卡的那一刻就消失了,并在uiimage和文本字段都填满后显示的方法。

<div><div></div><div></div><div></div><div></div></div>

#frame  div:nth-child(1) {
    z-index:10;
    width: 30%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
}
#frame  div:nth-child(2) {
    z-index:10;
    width: 30%;
    height: 100%;
    position: absolute;
    right: 0;
    top: 0;
}
#frame  div:nth-child(3) {
    z-index:10;
    width: 40%;
    height: 20%;
    position: absolute;
    left: 30%;
    top: 0;
}
#frame  div:nth-child(4) {
    z-index:10;
    width: 40%;
    height: 20%;
    position: absolute;
    left: 30%;
    bottom: 0;
}