Pergunta

Existe uma maneira de definir um valor padrão para um selecionador? Eu salvar a última linha selecionada de todos os catadores e eu quero ser capaz de ter os catadores de carregar as linhas salvas no arranque. A partir de agora eu encontrei este código:

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

Ele funciona, mas somente quando o usuário toca o selecionador. Eu preciso dele para trabalhar quando o aplicativo é carregado pela primeira vez. Se eu colocar esse código em viewDidLoad o aplicativo irá falhar. Alguém sabe onde o lugar apropriado para colocar isso no meu código para torná-lo trabalho?

Obrigado pelo seu tempo!

Foi útil?

Solução

Você verificou sua fonte de dados para o settingsPagePicker antes de chamar -selectRow: inComponent:? Animado para se certificar de que há dados disponíveis nesse índice (3 em seu código de exemplo)

Como você carregar seus dados para o seu fonte de dados? Você pode inicializar sua fonte de dados em viewDidLoad primeiro e depois chamar SelectRow uma vez que você sabe que não há dados disponíveis.

UPDATE: Aqui está o que o código deve ser semelhante ou algo parecido:

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

Outras dicas

Aqui alguns métodos da minha 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 é auto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top