Swift: Abrufen von Text aus einem UITextField in einer benutzerdefinierten UITableViewCell und Einfügen in ein Array

8

Ich mache eine sehr einfache App, bei der der Benutzer die Anzahl der Personen im ersten Bildschirm eingibt.

Im zweiten Bildschirm wird eine Anzahl von UITableViewCell basierend auf der Nummer generiert, die der Benutzer auf dem ersten Bildschirm eingegeben hat. Die UITableViewCell haben ein UITextField in ihnen und ich versuche, die in diesen Feldern eingegebenen Daten in einem Array zu speichern, sobald der Benutzer klickt, um zum dritten Bildschirm zu gelangen.

Wie kann ich das tun?
Vielen Dank im Voraus!

Bearbeiten: Ich verwende das Storyboard.

Hier sehen Sie, wie der Code, der die benutzerdefinierte UITableViewCell aufruft, für mein UIViewController :

aussieht %Vor%

Hier sehen Sie, wie der Code für UITableViewCell aussieht:

%Vor%     
Unis Barakat 31.12.2014, 22:10
quelle

1 Antwort

16

Es gibt ein Problem mit Ihrem Ansatz, wenn die Anzahl der Zeilen in Ihrer Tabelle die Anzahl überschreitet, die auf dem Bildschirm angezeigt werden kann. In diesem Fall werden die Zellen, die sich außerhalb des Bildschirms bewegen, erneut verwendet, und der Inhalt von nameInput textField geht verloren. Wenn Sie sicher sein können, dass dies nie passieren wird, verwenden Sie den folgenden Code (in der Methode, die Schaltflächenabgriffe behandelt), um Ihr Array zu erstellen:

%Vor%

Alternativ ....

Wenn es jedoch möglich ist, dass Zellen vom Bildschirm scrollen, schlage ich eine andere Lösung vor. Legen Sie die delegate für die Textfelder nameInput fest und verwenden Sie dann die Delegate-Methoden, um die Namen nach ihrer Eingabe zu erfassen.

Fügen Sie zunächst Variablen zu Ihrem View-Controller hinzu, um das Array und die Zeilennummer des aktuell bearbeiteten Textfelds zu speichern.

%Vor%

Fügen Sie dann in Ihrer cellForRowAtIndexPath -Methode Folgendes hinzu:

%Vor%

Fügen Sie dann zwei neue Funktionen hinzu, um festzustellen, wann die Textfelder beginnen / enden:

%Vor%

Wenn der Benutzer auf die Schaltfläche klickt, bearbeitet er unter Umständen noch einen der Namen. Um dies zu berücksichtigen, fügen Sie der Methode, mit der die Schaltflächenabgriffe gehandhabt werden, Folgendes hinzu:

%Vor%

Dies zwingt das TextField, die Bearbeitung abzuschließen und somit die Methode didEndEditing auszulösen, wodurch der Text im Array gespeichert wird.

    
pbasdf 02.01.2015, 14:01
quelle

Tags und Links