J'ai trouvé quelques questions sur la façon de faire un UIPageViewController accéder à une page spécifique, mais j'ai remarqué un problème ajouté avec le saut qu'aucune des réponses semblent reconnaître.
Sans entrer dans les détails de mon application iOS (qui est semblable à un paginé calendrier), voici ce que je suis en train de vivre. Je déclare une UIPageViewController, - vue-contrôleur, et de mettre en œuvre une source de données.
// end of the init method
pageViewController = [[UIPageViewController alloc]
initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
pageViewController.dataSource = self;
[self jumpToDay:0];
}
//...
- (void)jumpToDay:(NSInteger)day {
UIViewController *controller = [self dequeuePreviousDayViewControllerWithDaysBack:day];
[pageViewController setViewControllers:@[controller]
direction:UIPageViewControllerNavigationDirectionForward
animated:YES
completion:nil];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger days = ((THDayViewController *)viewController).daysAgo;
return [self dequeuePreviousDayViewControllerWithDaysBack:days + 1];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSInteger days = ((THDayViewController *)viewController).daysAgo;
return [self dequeuePreviousDayViewControllerWithDaysBack:days - 1];
}
- (UIViewController *)dequeuePreviousDayViewControllerWithDaysBack:(NSInteger)days {
return [[THPreviousDayViewController alloc] initWithDaysAgo:days];
}
Modifier Note: j'ai ajouté simplifié le code pour la file d'attente de la méthode. Même avec cette mise en œuvre blasphématoire j'ai exactement le même problème avec l'ordre des pages.
L'initialisation de tous les travaux comme prévu. L'augmentation de la pagination tout fonctionne très bien. Le problème c'est que si j'appel "jumpToDay" encore une fois, l'ordre devient confuse.
Si l'utilisateur est sur la journée -5 et les sauts de la journée 1, un défilement vers la gauche pour révéler le jour de -5 à nouveau à la place des 0 jours. Cela semble avoir quelque chose à voir avec la façon dont UIPageViewController conserve une référence à la proximité de pages, mais je ne trouve pas de référence à une méthode qui permettrait de forcer l'actualisation du cache.
Des idées?