Pergunta

Eu tenho um Uipickerview, em seu delegado estou tentando personalizar a visualização de uma linha. Estou usando o 3.1 SDK.

Então, no delegado, eu tenho:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
//    view.backgroundColor = [UIColor redColor];
    return view;
}

A partir do Apple Docs: se a visualização usada anteriormente (o parâmetro de exibição) for adequado, retorne isso. Se você retornar uma visualização diferente, a visualização usada anteriormente será lançada. A visualização do seletor centraliza a visualização retornada no retângulo para a linha.

Quando eu corro isso, meu controle UiPickerview não possui itens e, depois de um curto período de tempo. Quando removo esse método específico (que é opcional para o delegado), posso ver os rótulos que defino através do método do TitleForrow e ele não falhará mais.

Sou muito novo no cacau (e no cacau), não tenho certeza se a coisa da vista.

Estou fazendo algo errado?

Foi útil?

Solução

Sim, você implementa qualquer –pickerView:titleForRow:forComponent: ou –pickerView:viewForRow:forComponent:reusingView:, mas não ambos. O que está acontecendo é que não está chamando seu –pickerView:titleForRow:forComponent: Porque está usando o seu –pickerView:viewForRow:forComponent:reusingView:. Você está devolvendo o reusingView: parâmetro, mas isso é nil A primeira vez, porque não havia "visualização usada anteriormente" para essa linha.

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