如何在swift ios中以编程方式添加多个文本字段

时间:2017-12-09 10:14:32

标签: ios swift uitextfield

我试图通过运行循环来显示多个textFields,即文本字段noTextField的数量是否大于零(这是一个输入值),它应该在{上显示多个textFields {1}}。

以下是我有一个文本字段并打印多个ViewController但无法显示多个文本字段的内容。

我有什么

enter image description here

我想要什么

enter image description here

hello

2 个答案:

答案 0 :(得分:0)

错误和更正:

  1. 通过在日志中打印self.view.items值检查 self.view 的SubView项目内容。
  2. 您尚未为分配给任何增量位置的+1计数器文本字段分配X / Y位置,因此即使新对象将被创建,它也将重叠在同一个上一个项目上。
  3. 我总是建议在执行addSubview调用时将textfield对象同时放在数组中,紧跟在self.view.addSubview(sampleTextField)调用之后。这将帮助我在需要修改/访问/取消分配时保存每个文本字段项的引用。
  4. 您还为每个文本字段对象设置了标记,因此如果您不想使用数组,最好使用[self.view viewWithTag:tagNo]调用从子视图中获取带有该标记的对象。
  5. 您的代码段看起来像

         var xValue = 0,yValue =0
         var tagNo = 0  
         var textObjects = allocate new array.
    
         if self.noTextFields! > 0 {
                    for _ in 0..<self.noTextFields! {
                       // self.createForm()
                        print ("hello")
    
                        let sampleTextField =  UITextField(frame: CGRect(x: xValue, y: yValue, width: 300, height: 40)) //Note that I have set xValue and yValue
                        sampleTextField.placeholder = "Enter text here"
                        sampleTextField.font = UIFont.systemFont(ofSize: 15)
                        sampleTextField.borderStyle = UITextBorderStyle.roundedRect
                        sampleTextField.autocorrectionType = UITextAutocorrectionType.no
                        sampleTextField.keyboardType = UIKeyboardType.default
                        sampleTextField.returnKeyType = UIReturnKeyType.done
                        sampleTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
                        sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
                        sampleTextField.delegate = self as? UITextFieldDelegate
                        sampleTextField.tag = tagNo  //Note this line for tagNo
                        self.view.addSubview(sampleTextField)
                        textObjects.addObject:sampleTextField //Note this line for adding textfield to array for reference to get total items added
    
    yValue = yValue + sampleTextField.frame.size.height + 20; //Added yValue to place another text view at bottom of initial one and 20px buffer for gap.
                    }
                }
    

    print&#34;数组中的Total Textobjects:textObjects.count

    如果需要从视图中获取对象,则self.view.viewwithTag(tagNo)将返回确切的文本字段。

答案 1 :(得分:0)

您只需添加y的动态值(如果需要,添加x)。

var counter = 30
var yValue = 0

in for loop you just need to add below code

let sampleTextField =  UITextField(frame: CGRect(x: 20, y: yValue, width: 300, height: 40))

yValue = Counter
//(space each textfield if 30 because height of textfield is 40)

counter = counter + 70