Domanda

Sono programatically aggiungendo due UIPickerViews personalizzati per un'altra vista (MainView). Funzionano bene, ma non sono visibili fino a quando si verifica un evento di tocco in qualsiasi parte del MainView. Ho controllato i riferimenti di classe per UIPickerView e UIView, ma non ho trovato nulla che riesce a "rinfrescare" la vista, a meno che non mi manca qualcosa di ovvio?

Ecco il mio metodo drawRect in MainView.m. Ho provato a fare la stessa cosa in viewDidLoad ma senza successo. Potrebbe le rotazioni personalizzati / trasforma etc avere qualcosa a che fare con esso?

- (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];
}
È stato utile?

Soluzione

Si aggiunge subviews controller di vista, non la vista stessa. Vorrei suggerire familiarizzare con il design pattern MVC.

drawRect è solo dovrebbe essere utilizzato per il disegno reale della vista stessa, non subviews.

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