Frage

Ich füge programmatisch zwei benutzerdefinierte UIPickerViews zu einer anderen Ansicht (Mainview). Sie arbeiten nur gut, aber sie sind erst sichtbar, wenn ein Berührungsereignis in jedem Teil des Mainview auftritt. Ich habe die Klassenreferenzen für UIPickerView und UIView geprüft, aber haben nichts gefunden, das den Blick auf „refresh“ verwaltet, es sei denn, ich bin etwas fehlt offensichtlich?

Hier ist meine drawRect Methode in MainView.m. Ich habe versucht, die gleiche Sache in viewDidLoad zu tun, aber ohne Erfolg. Könnte die benutzerdefinierten Drehungen / Transformationen usw. hat etwas damit zu tun?

- (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];
}
War es hilfreich?

Lösung

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top