UIPickerView не появляется, пока не произойдет касание - PullRequest
1 голос
/ 28 мая 2009

Я программно добавляю два пользовательских 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];
}

1 Ответ

2 голосов
/ 28 мая 2009

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

drawRect должен использоваться только для реального рисования самого представления, а не подпредставлений.

...