Можем ли мы изменить направление анимации слайдов? - PullRequest
0 голосов
/ 12 февраля 2011

В моем приложении есть основной вид таблицы.При щелчке по ячейке создается DetailView, в котором отображаются сведения об элементе этой ячейки.На каждом DetailView у меня есть кнопки «Следующая» и «Предыдущая», которые помогают пользователям переходить к «Детальному представлению» следующего и предыдущего элемента, не возвращаясь к RootView.Когда я нажимаю кнопку «Далее».анимация справа налево.и то же самое, когда я нажимаю предыдущую кнопку.Анимация должна быть слева направо, когда я нажимаю предыдущую кнопку.Есть ли в любом случае, чтобы изменить это направление анимации.Я не хочу использовать [self.navigationController popViewControllerAnimated: YES], потому что у меня есть много элементов, и мне сложно позаботиться о стеке навигации.Так есть ли способ, которым я могу изменить анимацию справа налево слева направо, когда я нажимаю предыдущую кнопку.

1 Ответ

1 голос
/ 12 февраля 2011

Это может быть реализован контроллер навигации и push и pop, и вам не нужно иметь дело с грязным стеком навигации, потому что вам нужно только 1) выдвинуть представление и удалить предыдущее представление из стека ( в «следующем» случае) или 2) вставьте представление в стек перед текущим представлением и извлеките текущее представление (в «предыдущем» случае).

Однако пока я не вижу причин использовать здесь навигационный контроллер. Когда вы переключаетесь на новый подробный вид, подготовьте новый вид как скрытый и вставьте вид поверх слоев вида. Затем создайте объект CATransition с требуемыми параметрами, отобразите новый вид и обработайте предыдущий подробный вид (например, удалите его). Например,

CATransition transition = [CATransition animation];
transition.duration = 0.75;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = (nextDidPressed)? kCATransitionFromRight : kCATransitionFromLeft;
newDetailView.hidden = NO;
detailView.hidden = YES;
self.detailView = newDetailView;

Приведенный выше код делает несколько предположений относительно макетов вашего представления и объявленных свойств. Внесите необходимые изменения в соответствии с другой частью вашего кода.

...