2009-05-28 3 views
1

Ich programmiere programmatisch zwei benutzerdefinierte UIPickerViews zu einer anderen Ansicht (MainView). Sie funktionieren gut, aber sie sind nicht sichtbar, bis ein Berührungsereignis in irgendeinem Teil der Hauptansicht auftritt. Ich habe die Klassenreferenzen für UIPickerView und UIView überprüft, aber nichts gefunden, was die Ansicht "aktualisiert", es sei denn, ich vermisse etwas Offensichtliches?UIPickerView erscheint nicht, bis Berührung auftritt

Hier ist meine DrawRect-Methode in MainView.m. Ich habe versucht, dasselbe in ViewDidLoad zu tun, aber ohne Erfolg. Könnten die benutzerdefinierten Rotationen/Transformationen usw. etwas damit zu tun haben?

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

Antwort

2

Sie fügen Unteransichten in den Controller einer Ansicht ein, nicht die Ansicht selbst. Ich würde vorschlagen, sich mit dem MVC-Entwurfsmuster vertraut zu machen.

drawRect soll nur für die eigentliche Zeichnung der Ansicht selbst verwendet werden, nicht für Unteransichten.

+0

Vielen Dank, ich habe alle passenden Sachen auf einen UIViewController verschoben und die Kommissionierer erscheinen nun korrekt. – moigno