ios - done - uipickerview toolbar swift 4




So legen Sie einen Standardwert für eine UIPickerView fest (5)

Schnelle Lösung:

Outlet definieren:

@IBOutlet weak var pickerView: UIPickerView!  // for example

Dann können Sie beispielsweise in Ihrem viewWillAppear oder Ihrem viewDidLoad Folgendes verwenden:

pickerView.selectRow(rowMin, inComponent: 0, animated: true)
pickerView.selectRow(rowSec, inComponent: 1, animated: true)

Wenn Sie das Swift 2.0-Framework untersuchen, sehen Sie .selectRow wie .selectRow definiert:

func selectRow(row: Int, inComponent component: Int, animated: Bool) 

Wenn Sie auf .selectRow in Xcode klicken, wird Folgendes angezeigt:

Ich habe ein Problem mit meiner UIPickerView. Ich habe 3 Werte in EU AP und NA. Beim Starten der App scheint die EU ausgewählt zu sein, aber wenn ich ein NSLog(@"%@", [regions objectAtIndex:row]); Ich komme nur zurück (null) , jetzt, wenn ich auf den UIPickerView tippe, ist der EU-Wert ausgewählt und ich bekomme "EU" von einem NSLog zurück.

Meine Frage ist:

Wie kann ich einen Standardwert definieren, der ausgewählt wird (nicht nur die Bezeichnung), wenn der Benutzer die App nur startet und nichts berührt.

Bearbeiten: Hier ist mein Code, um den ausgewählten Artikel zu erhalten:

#pragma mark -
#pragma mark PickerView DataSource

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
    return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
    return [regions count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row
            forComponent:(NSInteger)component
{
    return [regions objectAtIndex:row];
}

#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
      inComponent:(NSInteger)component
{

                selectedRegion = [[NSString alloc] initWithFormat:
                              @"%@", [regions objectAtIndex:row]];
    NSLog(@"%@", selectedRegion);


}

Ich hatte auch dieses Problem. Aber anscheinend gibt es ein Problem mit der Reihenfolge der Methodenaufrufe. Sie müssen anrufen:

[self.picker selectRow:2 inComponent:0 animated:YES];

nach dem anrufen

[self.view addSubview:self.picker];

Sie müssen - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated in der Picker-Ansicht - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated , bevor sie angezeigt wird. In der Dokumentation wird angegeben, dass die Methode selectedRowInComp ... -1 ergibt. Daher ist es möglich, dass sich die Picker-Ansicht in einem Status ohne ausgewählte Zeile befindet. Es stellt sich heraus, dass es sich in diesem Zustand befindet, wenn es erstellt wurde.


So legen Sie einen Standardwert für eine UIPickerView fest

[self.picker selectRow:4 inComponent:0 animated:YES];

For example: you populated your UIPickerView with array values, then you wanted 

um einen bestimmten Array-Wert in der ersten Ladung von pickerView wie "Arizona" auszuwählen. Beachten Sie, dass das Wort "Arizona" sich auf Index 2 befindet. So wird's gemacht :) Viel Spaß beim Codieren.

NSArray *countryArray =[NSArray arrayWithObjects:@"Alabama",@"Alaska",@"Arizona",@"Arkansas", nil];
UIPickerView *countryPicker=[[UIPickerView alloc]initWithFrame:self.view.bounds];
countryPicker.delegate=self;
countryPicker.dataSource=self;
[countryPicker selectRow:2 inComponent:0 animated:YES];
[self.view addSubview:countryPicker];






uipickerview