2016-09-28 7 views
1

Ich arbeite an einer Anwendung in Swift. Zu Beginn stelle ich eine Anzahl von Eingängen zur Verfügung, die ich hinzufügen möchte. In der nächsten Ansicht erstelle ich so viele UITextFields wie ich in der ersten Ansicht definiert habe. Ich habe ein Problem mit dem Speichern all dieser Werte aus TextFields nach dem Drücken der Taste. Es scheint mir, dass die effektivste Lösung darin besteht, ein Array von UITextFields zu erstellen und jeden Wert von TextField in ein Array einzufügen und dann in Aktion zu setzen, um Werte hinzuzufügen, die in allen TextFields in array enthalten sind. Leider funktioniert es nicht. Irgendwelche Vorschläge? Danke im Voraus.Wie erstellt man ein Array von UITextField-Objekten in Swift?

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) 
} 

Antwort

0

könnten Sie erstellen einfach mit:

let textFields = [UITextField]() 

Sie berücksichtigen sollten eine UIScrollView verwenden, (wie in Ihrem Beispiel) oder (besser Idee in meinem opinon) ein UITableView zu Ihrem UITextfields hinzuzufügen. Sie haben also mehrere Zeilen und jede Zeile hat ein UITextField. Die Anzahl der Zeilen/Textfeld kann einfach angepasst werden (und zum Beispiel von Ihrem FirstViewController).

Erstellen Sie einfach eine benutzerdefinierte UITableViewCell - fügen Sie eine UITextField und verbinden Sie die IBOutlet. Um die Werte von jeder UITextField zu erhalten, könnten Sie alle Zellen durchlaufen und die Werte auslesen. Fragen Sie einfach, wenn Sie dazu mehr Hilfe benötigen.

+0

Im Moment läuft alles einwandfrei mit UIScrollView. Vielleicht werde ich auch versuchen, eine Version mit UITableViewCell zu erstellen. –

+0

So funktioniert alles? Sie haben erfolgreich ein Array von UITextFields erstellt? – derdida

+0

Ja, fast alles wurde richtig geschrieben. Ich habe nur einen einfachen Fehler bei der Deklaration eines UITextFields-Arrays gemacht. Danke für Ihre Hilfe! –

0

Erstellen von Array von UITextField könnte auf diese Weise

// 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) 
    } 
} 

In diesem UITextField Setup getan werden, ich habe Konto nicht für die Formatierung, die Antwort zu verkürzen.

Verwandte Themen