如何在Swift中创建UITextField对象数组?

时间:2016-09-28 19:20:44

标签: ios swift uitextfield

我正在使用Swift中的应用程序。一开始我提供了一些我想添加的输入。在下一个视图中,我创建了与我在第一个视图中定义的一样多的UITextField。我在按下按钮后存在从TextFields存储所有这些值的问题。在我看来,最有效的解决方案是创建一个UITextField数组,并将TextField的每个值添加到数组中,然后在按钮中将所有TextFields中的值添加到数组中。不幸的是,它不起作用。有什么建议?提前谢谢。

override func viewDidLoad() {
    super.viewDidLoad()

    var counter =  0
    for i in 1...mainInstance.numberOfInputs
    { 

    super.viewDidLoad()       
    array.insert(UITextField(frame: CGRect(x: 0, y: 50, width: 60, height: 20)), at: i)
    array[i].center = CGPoint(x: 200,y: 50 + counter)
    array[i].textAlignment = NSTextAlignment.center
    array[i].layer.borderWidth = 1
    array[i].layer.borderColor = UIColor.black.cgColor
    self.outletScrollView.addSubview(array[i])
    counter += 50

    }

    super.viewDidLoad()
    let button = UIButton(type: .system) // let preferred over var here
    button.frame = CGRect(x: 200, y: 50 + counter, width: 100, height: 20)
    button.setTitle("Recalculate", for: UIControlState.normal)
    button.addTarget(self, action: "actionRecalculate:", for: UIControlEvents.touchUpInside)
    self.outletScrollView.addSubview(button)
    outletScrollView.contentInset = UIEdgeInsetsMake(0, 0, CGFloat(counter+100), 0)
}

3 个答案:

答案 0 :(得分:1)

您可以使用以下方式轻松创建:

let textFields = [UITextField]()

您应该考虑使用UIScrollView(在您的示例中)或(在我的意见中更好的想法)UITableView添加您的UITextfields。所以你有多行,每行都有一个UITextField。可以轻松自定义行数/文本字段(例如,从FirstViewController获取)。

只需创建自定义UITableViewCell - 添加UITextField并关联IBOutlet即可。要获取每个UITextField的值,您可以迭代所有单元格,并读出值。如果您需要更多帮助,请问。

答案 1 :(得分:1)

创建UITextfield数组可以这样做

// Create an empty array of type UITextField
var listOfTextFields : [UITextField] = []

// In viewDidLoad, create a textfield and add it to the array
override func viewDidLoad() {
    super.viewDidLoad()

    for i in 0...mainInstance.numberOfInputs-1 {
        let textField = UITextField((frame: CGRect(x: X, y: Y*i, width: yourWidth, height: yourHeight)))
        textField.delegate = self
        listOfTextFields.append(textField)
    }
}

在这个UITextField设置中,我没有考虑任何格式来缩短答案。

答案 2 :(得分:0)

尽管这可能不是确切的用例,但可以帮助其他具有类似用例的对象(特别是通过编程创建的文本字段或自定义uicell)。

txtfield.tag = indexPath.row // or other int

然后在数组初始化并委派之后实现文本字段didEndEditing

@IBAction func endedEditing(_ sender: UITextField) {
    arr[sender.tag] = sender.text
}