2014-11-09 2 views
0

Я пытаюсь сделать UITableView появляться, когда пользователь нажимает на кнопку и исчезает при повторном нажатии кнопки.Как создать представление таблицы, когда кнопка нажата/нажата?

Я реализовал следующий код, но ничего не появляется, когда я нажимаю кнопку.

- (IBAction)dropDown:(UIButton *)sender 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.6]; 
    CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 200); 
    self.markersTableView.transform = transfrom; 
    self.markersTableView.alpha = self.markersTableView.alpha * (-1) + 1; 

    [UIView commitAnimations]; 
} 

В чем может быть проблема?

EDIT: я был в состоянии сделать UITableView появляются и исчезают при добавлении self.markersTableView.hidden = YES; в viewDidLoad() и self.markersTableView.hidden = NO; в методе IBAction.

Однако представление таблицы исчезает, когда я сначала нажать на кнопку, как показано на скриншоте:

enter image description here

Угасание строк является показателем он движется вниз по экрану, а затем его исчезает.

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

Любые подсказки?

+0

Это связано с тем, что, согласно вашему недавнему правлению, вы первоначально настроили его НЕ скрывать, а затем установите его на HIDDEN при нажатии кнопки. Если вы хотите, чтобы он сначала был скрыт, а затем отображался только при нажатии, замените значения self.markersTableView.hidden, которые вы разместили в приведенном выше редактировании ... также в вашей кнопке добавьте метод if, который проверяет текущую .markersTableView.hidden и изменяет его на противоположное. – AMI289

+0

Я идиот, я имел в виду, что я назначил его YES на скрытом изначально, и НЕТ на спрятанном в IBAction ... извините за путаницу, я отредактировал его сейчас – Pangu

ответ

0

Не используйте преобразование на вашем столе. Это заставит его ПОСМОТРЕТЬ, как будто он находится в другом положении, но он не будет правильно реагировать на краны.

Вместо этого используйте новые методы анимации на основе блоков UIView и измените центр представления.

Код может выглядеть следующим образом (если вы не используете автоматическую раскладку)

[UIView AnimateWithDuration: .2 
    animations:^
    { 
    CGPoint center = self.markersTableView.center; 
    center.y += 200; 
    self.markersTableView.center = center; 
    } 
]; 

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

Из памяти, приведена схема создания анимации, основанной на автоматической компоновке: вы должны создать ограничение вертикальной позиции в своем представлении таблицы и связать ограничение с IBOutlet в вашем контроллере представления. В коде анимации вы изменяете константу ограничения (вертикальное положение), а затем в блоке анимации отправляете представление requireLayout.

+0

Я использую автомат, но я не уверен, что я знайте, что вы имеете в виду. Я довольно новичок в программировании на iOS, можете ли вы привести пример? :( – Pangu

+0

Вы просто положили свой код анимации внутри блока на код Дункана выше, вместо использования 'beginAnimations' и' commitAnimations'. – AMI289