Picker View не появляется при первой попытке нажатия кнопки - PullRequest
1 голос
/ 23 декабря 2011

У меня есть кнопка справа от клетки.

Теперь у меня есть окно выбора, которое должно отображаться при нажатии кнопки.

Хорошо работает со следующим кодом:

-(IBAction)buttonPressed:(id)sender
{
[UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    CGAffineTransform transform = CGAffineTransformMakeTranslation(0, 200);
    monthPicker.transform = transform;
    [self.view addSubview:monthPicker];
    [UIView commitAnimations];  
}

Но я искал скрытие вида средства выбора, когда оно было видимым, и показывалось, когда представления средства выбора не было, я нашел решение для него ..... добавил следующий код к вышеуказанному методу:

monthPicker.hidden = [monthPicker isHidden]? НЕТ: ДА;

Теперь окно выбора не отображается с 1-й попытки, когда я нажимаю кнопку, но оно отлично работает со 2-й попытки и позже.

Есть предложения?

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Ответ от @Padavan должен сработать, но если вам нужен эффект затухания "в анимации", скрытое свойство не выполняет эту работу.Вместо этого вы должны использовать свойство UIView.alpha.Вот мой пример кода для этого.

- (void) viewDidLoad {
       [super viewDidLoad];

       /////////////////////////////////////////////////
       //    ... Initialize your month picker here    //
       /////////////////////////////////////////////////

       monthPicker.alpha = 0;    
       [self.view addSubview:monthPicker];    
}

- (void)buttonPressed:(id)sender
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    CGAffineTransform transform = CGAffineTransformMakeTranslation(0, 200);
    monthPicker.transform = transform;
    monthPicker.alpha = monthPicker.alpha * (-1) + 1;
    [UIView commitAnimations];  
}
1 голос
/ 23 декабря 2011

Изначально скрыт ли месячный выбор? Когда метод вызывается в первый раз. Если нет - он прячется, и вы не можете видеть это. Может быть, вам нужно установить monthPicker.hidden=YES в методе init.

...