swift - 如何访问函数变量并将其从 super View 中删除?

标签 swift function uiimageview uiimage superview

我创建了一个函数,如果您输入超过四个字符,textField 将在角落显示一个带有绿色勾号的图像,但是当我删除 textField 内的所有字符时,它会显示一条错误消息,但我想删除该绿色勾选图像。我试过了

.removeFromSuperView

但它不起作用。

我很难从函数中访问变量以将其从 super View 中删除。

这是我在文本字段(最右边)中创建图像的代码

func addRightImage(txtField: UITextField, andImage img:UIImage)
{
    let rightImageView = UIImageView(frame: CGRect(x: 0.0, y: 0.0, width: img.size.width, height: img.size.height))

    rightImageView.image = img
    txtField.rightView = rightImageView
    txtField.rightViewMode = .always



}

这是我为firstName 文本字段创建的事件处理程序..

@objc func editing()
{
    if(firstName.isEditing == true)
    {
        if(((firstName.text!).count) > 4)
        {
            validColorChange(subject: firstName)

            addRightImage(txtField: firstName, andImage: #imageLiteral(resourceName: "tick"))


        }
        else if(firstName.text == "")
        {

            errorColorChange(subject: firstName)
           <--- //I want to remove image here --->

            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
            sleep(1)

        }
        else
        {
            self.crossLabel.removeFromSuperview()
            self.label.removeFromSuperview()
          <--- //I want to remove image here. --->

        }
    }

我们将非常感谢您的时间和帮助! 谢谢!

最佳答案

首先将委托(delegate)分配给您的文本字段

然后将此委托(delegate)方法放入您的代码中

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {


    if textField == txtEmail {


        if textField.text != "" {


            if (textField.text?.count)! < 4 {


                txtEmail.rightViewMode = .never


            }else {


                let rightImageView = UIImageView(frame: CGRect(x: 0.0, y: 0.0, width: img.size.width, height: img.size.height))
                rightImageView.image = #imageLiteral(resourceName: "ic_notification")
                txtEmail.rightView = rightImageView
                txtEmail.rightViewMode = .always

            }
        }

    }

    return true

}

或者如果您想更改代码,请输入

firstName.rightViewMode = .never

而不是.removeFromSuperView

关于swift - 如何访问函数变量并将其从 super View 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51906419/

相关文章:

ios - 使用 cgColor 自定义颜色

ios - 裁剪 viewController 以适合 iphone 屏幕大小

iOS - 无法检测到应用程序崩溃

ios - 在 Swift 中为 Bonjour NetService 创建 TXT 记录

swift - 在 Swift 3 中使用 SWXMLHash 反序列化一个类

ios - 如何获得如下图所示的透明状态栏?

python - 在python中从类vs对象调用函数

uitableview - Swift:将 UITableViewCell 标签传递给新的 ViewController

c++ - 在不使用 decltype[c++] 的情况下传递键类型的比较函数

c - C 函数中的变量