Domanda

C'è un modo per impostare un valore predefinito per un selettore? Salvo l'ultima riga selezionata da tutti i selettori e voglio essere in grado di caricare i selettori all'avvio. A partire da ora ho trovato questo codice:

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

Funziona ma solo quando l'utente tocca il selettore. Ho bisogno che funzioni quando l'app viene caricata per la prima volta. Se inserisco questo codice in viewDidLoad, l'app andrà in crash. Qualcuno sa dove sia il posto giusto per inserirlo nel mio codice per farlo funzionare?

Grazie per il tuo tempo!

È stato utile?

Soluzione

Hai controllato l'origine dati per settingsPagePicker prima di chiamare -selectRow: inComponent: animato per assicurarti che ci siano dati disponibili in quell'indice (3 nel tuo codice di esempio)?

Come si caricano i dati per l'origine dati? Puoi inizializzare la tua origine dati in viewDidLoad prima e quindi chiamare selectRow una volta che sai che ci sono dati disponibili.

AGGIORNAMENTO: ecco come dovrebbe apparire il tuo codice o qualcosa del genere:

- (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;
}

Altri suggerimenti

Ecco alcuni metodi della mia classe.

- (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 è self

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top