Wie verwende ich einen UIPickerView für mehrere Textfelder in einer Ansicht?

8

Ich habe 8 Textfelder in einer Ansicht. Ich möchte jeden mit einem Pickerview bevölkern. Kann ich 1 PickerView haben, der verschiedene Listen von Elementen aus verschiedenen Arrays für verschiedene Textfelder anzeigt?

Kann jemand erklären, wie ich es programmatisch mit einem Beispielcode mache?

Wie kann ich den PickerView auch ausblenden, wenn die Ansicht geladen wird und nur angezeigt werden soll, wenn ich auf ein Textfeld mit der entsprechenden Datenliste klicke? Es sollte verschwinden, wenn ich die Daten auswähle und wieder aufscheine, wenn ich auf ein anderes Textfeld mit der entsprechenden Datenliste usw. klicke.

Ich bin neu bei xcode. Jede Hilfe wird sehr geschätzt. Danke.

    
Sanjyot Shah 23.07.2012, 12:23
quelle

4 Antworten

11

Sie können nur eine PickerView verwenden, die abhängig von bestimmten Bedingungen unterschiedliche Daten anzeigt.

Meine Idee ist folgende: Sie könnten, sagen wir, 8 verschiedene Arrays erstellen - eines zum Auffüllen des UIPickerView, abhängig davon, was UITextField angezapft wurde. Deklariere sie in der Schnittstelle als NSArray und initialisiere sie in viewDidLoad:

%Vor%

Dann erstellen Sie ein anderes, um das Array anzugeben, das es füllen soll (wie NSArray *currentArray ) und Sie müssen es nicht einmal initialisieren = es wird nur für das richtige Array verwendet.

Sie sollten also den Delegaten der UITextFields auf Ihren View-Controller setzen, und in der Methode textFieldShouldBeginEditing überprüfen Sie, wer das UITextField ist, weisen das richtige Array als currentArray zu, laden die UIPickerView mit reloadData neu und geben NO zurück in der gleichen textFieldShouldBeginEditing -Methode. currentTextField ist ein Zeiger nur um zu wissen, was das currentUITextField "bearbeitet" wird - wir müssen es speichern, um den Text nach der Auswahl von Daten in der Auswahl festlegen zu können. Deklarieren Sie currentTextField in der Schnittstelle.

%Vor%

Wenn Ihr View-Controller das UIPickerViewDelegate ist, füllen Sie also Ihr UIPickerView entsprechend dem aktuellen Array auf, und Sie müssen nichts ändern. Verwenden Sie stattdessen das currentArray als Array, von dem Daten abgerufen werden.

Nun, um den PickerView anzuzeigen:

Nachdem Sie das IBOutlet verbunden haben, sollten Sie in Ihrer viewDidLoad zwei Dinge tun: Setzen Sie den Rahmen der UIPickerView und fügen Sie ihn als Unteransicht hinzu:

%Vor%

Nun müssen Sie die Methode namens animatePickerViewIn erstellen, die wir aufgerufen haben, wenn der Benutzer auf das UITextField tippt.

%Vor%

Um die Daten in der PickerView zu laden:

%Vor%

Wenn der Benutzer die Zeile in der PickerView auswählt, erhalten Sie diese als Delegate-Methode. Legen Sie einfach den Text des currentTextField als den ausgewählten Wert fest:

%Vor%     
Natan R. 23.07.2012, 12:37
quelle
1

Verwenden Sie dies.

%Vor%

Wo Sie 8 Fälle im Wechselzustand haben müssen, um ein anderes Array aufzurufen und in die PickerView zu setzen.

    
Vaghani.Rahul 23.07.2012 12:50
quelle
1

Ich habe diesen Code mit 3 Textfeldern getestet.

Und perfekte Lösung Ihres Problems gefunden.

1) Nimm ein globales UITextField.

2) Setzen Sie bei der Methode delegate der Textfeldbearbeitung das globale Textfeld auf das aktuelle Textfeld.

3) Bei der Auswahlmethode für den Picker-Wert legen Sie den Text des globalen Textfelds fest und ändern den Wert des ausgewählten Textfelds.

Der folgende Code funktioniert einwandfrei.

Viel Spaß beim Programmieren.

%Vor%     
Hemang 23.07.2012 12:52
quelle
0
___ qstntxt ___

Ich habe 8 Textfelder in einer Ansicht. Ich möchte jeden mit einem Pickerview bevölkern. Kann ich 1 PickerView haben, der verschiedene Listen von Elementen aus verschiedenen Arrays für verschiedene Textfelder anzeigt?

Kann jemand erklären, wie ich es programmatisch mit einem Beispielcode mache?

Wie kann ich den PickerView auch ausblenden, wenn die Ansicht geladen wird und nur angezeigt werden soll, wenn ich auf ein Textfeld mit der entsprechenden Datenliste klicke? Es sollte verschwinden, wenn ich die Daten auswähle und wieder aufscheine, wenn ich auf ein anderes Textfeld mit der entsprechenden Datenliste usw. klicke.

Ich bin neu bei xcode. Jede Hilfe wird sehr geschätzt. Danke.

    
___ qstnhdr ___ Wie verwende ich einen UIPickerView für mehrere Textfelder in einer Ansicht? ___ answer11612918 ___

Ich habe diesen Code mit 3 Textfeldern getestet.

Und perfekte Lösung Ihres Problems gefunden.

1) Nimm ein globales UITextField.

2) Setzen Sie bei der Methode delegate der Textfeldbearbeitung das globale Textfeld auf das aktuelle Textfeld.

3) Bei der Auswahlmethode für den Picker-Wert legen Sie den Text des globalen Textfelds fest und ändern den Wert des ausgewählten Textfelds.

Der folgende Code funktioniert einwandfrei.

Viel Spaß beim Programmieren.

%Vor%     
___ answer11612702 ___

Sie können nur eine PickerView verwenden, die abhängig von bestimmten Bedingungen unterschiedliche Daten anzeigt.

Meine Idee ist folgende: Sie könnten, sagen wir, 8 verschiedene Arrays erstellen - eines zum Auffüllen des UIPickerView, abhängig davon, was UITextField angezapft wurde. Deklariere sie in der Schnittstelle als NSArray und initialisiere sie in viewDidLoad:

%Vor%

Dann erstellen Sie ein anderes, um das Array anzugeben, das es füllen soll (wie textFiled1.tag=100; ) und Sie müssen es nicht einmal initialisieren = es wird nur für das richtige Array verwendet.

Sie sollten also den Delegaten der UITextFields auf Ihren View-Controller setzen, und in der Methode %code% überprüfen Sie, wer das UITextField ist, weisen das richtige Array als currentArray zu, laden die UIPickerView mit %code% neu und geben NO zurück in der gleichen %code% -Methode. currentTextField ist ein Zeiger nur um zu wissen, was das currentUITextField "bearbeitet" wird - wir müssen es speichern, um den Text nach der Auswahl von Daten in der Auswahl festlegen zu können. Deklarieren Sie currentTextField in der Schnittstelle.

%Vor%

Wenn Ihr View-Controller das UIPickerViewDelegate ist, füllen Sie also Ihr UIPickerView entsprechend dem aktuellen Array auf, und Sie müssen nichts ändern. Verwenden Sie stattdessen das currentArray als Array, von dem Daten abgerufen werden.

Nun, um den PickerView anzuzeigen:

Nachdem Sie das IBOutlet verbunden haben, sollten Sie in Ihrer viewDidLoad zwei Dinge tun: Setzen Sie den Rahmen der UIPickerView und fügen Sie ihn als Unteransicht hinzu:

%Vor%

Nun müssen Sie die Methode namens %code% erstellen, die wir aufgerufen haben, wenn der Benutzer auf das UITextField tippt.

%Vor%

Um die Daten in der PickerView zu laden:

%Vor%

Wenn der Benutzer die Zeile in der PickerView auswählt, erhalten Sie diese als Delegate-Methode. Legen Sie einfach den Text des currentTextField als den ausgewählten Wert fest:

%Vor%     
___ tag123iphone ___ Verwenden Sie diesen Tag NICHT, es sei denn, Sie wenden sich speziell an Apple's iPhone und / oder iPod touch. Verwenden Sie für nicht hardwareabhängige Fragen das Tag [ios]. Weitere zu betrachtende Tags sind [xcode] (aber nur, wenn es sich um die IDE selbst handelt), [swift], [objective-c] oder [cacao-touch] (aber nicht [cocoa]). Bitte verzichten Sie auf Fragen zum iTunes App Store oder zu iTunes Connect. Wenn Sie C # verwenden, markieren Sie mit [mono]. ___ tag123xcode ___ Xcode ist Apples integrierte Entwicklungsumgebung (IDE). NUTZUNGSHINWEIS: Verwenden Sie dieses Tag nur für Fragen zur Xcode-IDE selbst und nicht für allgemeine Mac- oder iOS-Programmierungsthemen. Verwenden Sie [Kakao] für Mac-Programmierfragen und [Kakaotouch] oder [ios] oder [Swift] für iOS-Programmierfragen. ___ tag123uitxtfield ___ Ein UITextField-Objekt ist ein Steuerelement, das bearbeitbaren Text anzeigt und eine Aktionsnachricht an ein Zielobjekt sendet, wenn der Benutzer auf die Zurück-Schaltfläche klickt. In der Regel verwenden Sie diese Klasse, um kleine Textmengen vom Benutzer zu erfassen und auf der Grundlage dieses Texts sofortige Aktionen auszuführen, z. B. eine Suchoperation. ___ tag123uipickervick ___ Die UIPickerView-Klasse implementiert Objekte, Picker-Ansichten genannt, die eine Spinnrad- oder Slot-Machine-Metapher verwenden, um einen oder mehrere Werte zu zeigen. Erscheint auf iOS. ___ answer11612665 ​​___

1.Verwenden Sie eine ToolBar mit Done barButtonItem, die die PickerView ausblenden sollte.

2. Geben Sie nun Ihre textFields tagValues ​​wie: %code% und füllen Sie dann Ihr pickerView Array mit diesem Tag-Wert.

3.Wenn der Benutzer einen Wert aus der PickerView auswählt, schreiben Sie in seiner Delegate-Methode

%Vor%

Ich schätze, Sie können den Code selbst ausprobieren, jetzt, da Sie den Kern der Lösung haben. Glück!

    
___ answer11612870 ___

Verwenden Sie dies.

%Vor%

Wo Sie 8 Fälle im Wechselzustand haben müssen, um ein anderes Array aufzurufen und in die PickerView zu setzen.

    
___
iPhone Developer 23.07.2012 12:35
quelle