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!
Hier sehen Sie, wie der Code, der die benutzerdefinierte UITableViewCell
aufruft, für mein UIViewController
:
Hier sehen Sie, wie der Code für UITableViewCell
aussieht:
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:
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:
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.
Tags und Links uitableview ios uitextfield