UIPickerView не отображается до тех пор, пока не произойдет касание

StackOverflow https://stackoverflow.com/questions/920378

Вопрос

Я программно добавляю два пользовательских UIPickerViews в другой вид (MainView).Они работают просто отлично, но они не видны до тех пор, пока не произойдет событие касания в любой части MainView.Я проверил ссылки на классы для UIPickerView и UIView, но не нашел ничего, что могло бы "обновить" представление, если только я не упускаю что-то очевидное?

Вот мой метод drawRect в MainView.m.Я пытался сделать то же самое в viewDidLoad, но безуспешно.Могут ли пользовательские вращения / преобразования и т.д. Иметь к этому какое-то отношение?

- (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];
}
Это было полезно?

Решение

Вы добавляете вложенные представления в контроллер представления, а не в само представление.Я бы посоветовал ознакомиться с шаблоном проектирования MVC.

Предполагается, что drawRect используется только для фактического рисования самого вида, а не подвидов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top