Frage

Gibt es eine Möglichkeit, einen Standardwert für eine Picker einstellen? Ich speichere die letzte ausgewählte Zeile aus allen Kommissionierer und ich möchte in der Lage sein die Pflücker diese gespeicherten Zeilen beim Windows Start geladen zu haben. Ab jetzt habe ich diesen Code gefunden:

[settingsPagePicker selectRow:3 inComponent:0 animated:YES];

Es funktioniert aber nur, wenn der Benutzer den Picker tippt. Ich brauche es, zu arbeiten, wenn die App zum ersten Mal geladen wird. Wenn ich diesen Code auf viewDidLoad setzen wird die App zum Absturz bringen. Wer weiß, wo der richtige Platz in meinem Code zu setzen, damit es funktioniert?

Vielen Dank für Ihre Zeit!

War es hilfreich?

Lösung

Haben Sie Ihre Datenquelle für die settingsPagePicker geprüft vor dem Aufruf -selectRow: inComponent: animiert, um sicherzustellen, gibt es Daten an diesem Index vorhanden ist (3 in Ihrem Beispielcode)

Wie laden Sie Ihre Daten für Ihre Datenquelle? Sie können Ihre Datenquelle in viewDidLoad zuerst initialisieren und dann selectRow anrufen, sobald Sie wissen, dass es Daten zur Verfügung.

UPDATE: Hier ist, was Ihr Code wie oder etwas wie es aussehen sollte:

- (void)viewDidLoad
{
    [super viewDidLoad];
    pickerDataSource = [[NSMutableArray alloc] init];
    [pickerDataSource addObject:@"Item 01"];
    [pickerDataSource addObject:@"Item 02"];
    [pickerDataSource addObject:@"Item 03"];
    [pickerDataSource addObject:@"Item 04"];

    // Might want to move this to -viewWillAppear:animated
    [settingsPagePicker selectRow:3 inComponent:0 animated:YES];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (pickerView == settingsPagePicker)
    {
        return [pickerDataSource objectAtIndex:row];
    }
    return @"";
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{
    if (pickerView == settingsPagePicker)
    {
        return [pickerDataSource count];
    }
    return 0;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
{
    return 1;
}

Andere Tipps

Hier einige Methoden aus meiner Klasse.

- (void)viewDidLoad {
   [super viewDidLoad];
   currentNumbersOfComponents = 1;
   //[picker selectRow:2 inComponent:0 animated:NO];
}
- (void) viewDidAppear:(BOOL)animated{
   [super viewDidAppear:animated];
   [picker selectRow:2 inComponent:0 animated:YES];
}

#pragma mark picker view data source methods

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return currentNumbersOfComponents;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 5;
}

picker.dataSource ist selbst

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top