首页 > 解决方案 > Swift 4 中的动态文本字段创建和访问这些字段

问题描述

for (index, value) in controlArr.enumerated() {
        print("\(index): \(value)")

        let  yPosition : Int = index+1
        DispatchQueue.main.async {                    

            let categoryField =  UITextField(frame: CGRect(x: 15, y: 84*yPosition+35, width: Int(self.view.frame.width - 35), height: 40))
            // categoryField.placeholder = "Please Enter \(value)"
            categoryField.font = UIFont.systemFont(ofSize: 15)
            categoryField.text  = "\(self.fieldArr[index])"
            categoryField.delegate = self
            categoryField.tag = 100 + index
           // self.myDict["myTextfield\(index)"] = categoryField

            categoryField.borderStyle = UITextBorderStyle.bezel
            categoryField.autocorrectionType = UITextAutocorrectionType.no
            categoryField.keyboardType = UIKeyboardType.default
            categoryField.returnKeyType = UIReturnKeyType.done
            categoryField.clearButtonMode = UITextFieldViewMode.whileEditing;
            categoryField.contentVerticalAlignment = UIControlContentVerticalAlignment.center

            self.arrayOfTextFields.append(categoryField)
            self.scrollView.addSubview(categoryField)

            for item in self.controlArr {

                let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 20))

                if item == "dropdown"
                {
                    categoryField.rightViewMode = UITextFieldViewMode.always
                    imageView.contentMode = .scaleAspectFit
                    let image = UIImage(named:"down.png")
                    imageView.image = image
                    categoryField.rightView = imageView

                }else{

                    imageView.isHidden = true
                }

            }
   }         
  1. 如何获取创建的文本字段并用于访问这些字段。

  2. 我在Dynamic中尝试了很多实现这一目标

谢谢

标签: iosswiftuitextfield

解决方案


您可以使用addTarget方法UITextField并获取文本字段文本更改。

categoryField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)

@objc func textFieldDidChange(_ textField: UITextField) {
        print(textField.text ?? "")
}

获取所有 textField 文本

在按钮单击或某些地方调用以下函数以获取所有值UITextField

func alltextField() {
        for sview in scrollView.subviews {
            if sview is UITextField, let textField = sview as? UITextField {
                print(textField.text ?? "")
            }
        }
    }

推荐阅读