Pergunta

Eu estou programaticamente adicionando duas UIPickerViews personalizados para outra vista (MainView). Eles trabalham muito bem, mas eles não são visíveis até que um evento de toque ocorre em qualquer parte do MainView. Eu verifiquei as referências de classe para UIPickerView e UIView, mas não encontrei nada que consegue "refresh" a vista, a menos que eu estou faltando algo óbvio?

Aqui é o meu método drawRect em MainView.m. Eu tentei fazer a mesma coisa em viewDidLoad mas sem sucesso. Poderiam os rotações personalizadas / transforma etc ter algo a ver com isso?

- (void)drawRect:(CGRect)rect { 
    CGRect pickerFrame = CGRectMake(50, -32, 30, 180);
    m_picker1 = [[UIPickerView alloc] initWithFrame:pickerFrame];
    m_picker1.delegate = self;  
    m_picker1.tag = k_ptag1;
    m_picker1.showsSelectionIndicator =YES;  
    m_picker1.backgroundColor = [UIColor clearColor]; 
    CGAffineTransform rotate = CGAffineTransformMakeRotation(3.14/2);  
    rotate = CGAffineTransformScale(rotate, 0.075, 0.85);  
    [m_picker1 setTransform:rotate];  
    [self addSubview:m_picker1]; 

    pickerFrame = CGRectMake(50, 67, 30, 180);
    m_picker2 = [[UIPickerView alloc] initWithFrame:pickerFrame];
    m_picker2.delegate = self;  
    m_picker2.tag = k_ptag2;
    m_picker2.showsSelectionIndicator =YES;  
    m_picker2.backgroundColor = [UIColor clearColor]; 
    rotate = CGAffineTransformMakeRotation(3.14/2);  
    rotate = CGAffineTransformScale(rotate, 0.075, 0.85);  
    [m_picker2 setTransform:rotate];  
    [self addSubview:m_picker2];
}
Foi útil?

Solução

Você adiciona subviews no controlador de um ponto de vista, não a vista em si. Eu sugeriria familiarizar-se com o padrão de projeto MVC.

drawRect só é suposto ser usado para o desenho real do próprio ponto de vista, não subviews.

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