Picker View не появляется при первой попытке щелчка кнопки

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

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

Работает отлично со следующим кодом:

-(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

Ответ от @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];  
}

Ответ 2

Первоначально скрыт ли месяцPicker? Когда метод называется первым. Если нет - он скрывается, и вы не можете его увидеть. Возможно, вам нужно установить monthPicker.hidden=YES в методе init.