Question

J'ajoute deux programatically UIPickerViews personnalisés à une autre vue (MainView). Ils travaillent très bien, mais ils ne sont pas visibles jusqu'à ce qu'un événement tactile se produit dans une partie du MainView. J'ai vérifié les références de classe pour UIPickerView et UIView mais ai rien trouvé qui parvient à « rafraîchir » la vue, à moins que je me manque quelque chose évidente?

Voici ma méthode de drawRect dans MainView.m. Je l'ai essayé de faire la même chose en viewDidLoad mais sans succès. Pourrait les rotations personnalisées / etc transforme quelque chose à faire?

- (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];
}
Était-ce utile?

La solution

Vous ajoutez subviews dans le contrôleur de vue, pas la vue elle-même. Je vous suggère de vous familiariser avec le design pattern MVC.

drawRect n'est censé être utilisé pour le dessin réel de la vue elle-même, et non des sous-vues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top