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.
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.
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.
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%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.
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%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.
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%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%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!
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.
Tags und Links iphone xcode uitextfield uipickerview