Это может быть реализован контроллер навигации и 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;
Приведенный выше код делает несколько предположений относительно макетов вашего представления и объявленных свойств. Внесите необходимые изменения в соответствии с другой частью вашего кода.