Ich weiß, dass Sie mit einem UIDatePicker Folgendes verwenden können:
NSDate *myDate = picker.date;
In meiner Ansicht verwende ich jedoch eine UIPickerView. Wie kann ich den Wert auf ähnliche Weise auswählen lassen? Oder muss ich dafür die Methode didSelectRow einrichten?
Update: Dieser Code funktioniert für Picker mit 1 Komponente:
NSInteger row;
NSString *weightSelected;
row = [repPicker selectedRowInComponent:0];
weightSelected = [pickerArray objectAtIndex:row];
Ich habe diesen Code für meinen Picker mit 2 Komponenten müde gemacht, aber er friert ein:
NSInteger row1, row2;
NSString *weightSelected1;
NSString *weightSelected2;
row1 = [repPicker selectedRowInComponent:0];
row2 = [repPicker selectedRowInComponent:1];
weightSelected1 = [pickerArray objectAtIndex:row1];
weightSelected2 = [pickerArray objectAtIndex:row2];
NSString *weightSelected = [NSString stringWithFormat:@"%@.%@", weightSelected1, weightSelected2];
ios
objective-c
cocoa-touch
pkamb
quelle
quelle
Sie können den Text des ausgewählten Elements in einem beliebigen Abschnitt der Auswahl mithilfe derselben Funktion wie pickerView aus Ihrer benutzerdefinierten ViewController-Klasse abrufen:
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
mit dem ausgewählten Element
[myPickerView selectedRowInComponent:0]
So legen Sie den Text einer Beschriftung in einer benutzerdefinierten Zelle mit dem aktuell ausgewählten Wert aus dem 2. Abschnitt von myPickerView fest (wahrscheinlich eine Eigenschaft Ihres View Controllers).
[cell.label setText:[self pickerView:myPickerView titleForRow:[myPickerView selectedRowInComponent:1] forComponent:1]];
Ändern Sie einfach beide: 1s in: 2s usw. für jeden Abschnitt
quelle
UIPickerViewDelegate
die Zeilentitel von einem Array erhält. Ehrlich gesagt sollte dies die akzeptierte Antwort sein.Das habe ich getan:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { selectedEntry = [allEntries objectAtIndex:row]; }
Das
selectedEntry
ist einNSString
und enthält den aktuell ausgewählten Eintrag in der Auswahlansicht. Ich bin neu in Ziel C, aber ich denke, das ist viel einfacher.quelle
Sie können mit der folgenden Methode auf die ausgewählte Zeile für eine bestimmte Komponente zugreifen:
- (NSInteger)selectedRowInComponent:(NSInteger)component
Andernfalls ist die Implementierung der Delegatenfunktion die einzige andere Option.
quelle
dimissPicker
Methode, die aufgerufen wird, wenn die Senden-Taste gedrückt wird. Ich möchte, dass der ausgewählte Wert gespeichert wird oder dass eine Schaltfläche usw. aktualisiert wird, wenn die dissmissPicker-Methode aufgerufen wird. Wie kann ich das machen? Muss ich dieselectedRowInCompnent
Methode hinzufügen ?selectedRowInComponent
Methode hinzugefügt , aber was genau mache ich damit? Es soll den ausgewählten Wert zurückgeben. Ich habe auch 2 Komponenten im Clicker.Sie müssen den Delegierten des Kommissionierers genauso fragen wie Ihre Bewerbung. So mache ich das in meinem UIPickerViewDelegate:
func selectedRowValue(picker : UIPickerView, ic : Int) -> String { //Row Index let ir = picker.selectedRow(inComponent: ic); //Value let val = self.pickerView(picker, titleForRow: ir, forComponent: ic); return val!; }
quelle
Sie müssen die
didSelectRow
Delegate-Methode verwenden, da aUIPickerView
eine beliebige Anzahl von Komponenten haben kann. Es gibt keinen "objectValue" oder ähnliches, denn das liegt ganz bei Ihnen.quelle
Abrufen des ausgewählten Titels einer Auswahl:
let component = 0 let row = picker.selectedRow(inComponent: component) let title = picker.delegate?.pickerView?(picker, titleForRow: row, forComponent: component)
quelle
NSInteger SelectedRow; SelectedRow = [yourPickerView selectedRowInComponent:0]; selectedPickerString = [YourPickerArray objectAtIndex:SelectedRow]; self.YourTextField.text= selectedPickerString; // if you want to move pickerview to selected row then for (int i = 0; I<YourPickerArray.count; i++) { if ([[YourPickerArray objectAtIndex:i] isEqualToString:self.YourTextField.text]) { [yourPickerView selectRow:i inComponent:0 animated:NO]; } }
quelle
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { weightSelected = [pickerArray objectAtIndex:row]; }
quelle
Das ist meine Antwort
- (IBAction)Result:(id)sender { self.statusLabel.text = DataSource[[pickerViewTool selectedRowInComponent:0]]; }
quelle