Hallo zusammen,
Ich möchte in meiner App eine Navigation ähnlich wie in der Snapchat App implementieren, so dass der User durch horizontales Swipen durch die verschiedenen VCs navigieren kann.
Ich mache das aktuell über einen UIPageViewController:
Alles anzeigen
PageNavigationVC ist ein UIViewController, der VC mit dem identifier "PageViewController" ist ein UIPageViewController.
Das Navigieren durch das Swipen funktioniert auch schon korrekt, ich habe allerdings ein paar Probleme, die ich leider nicht lösen kann:
Die einzelnen VCs, durch die geswiped wird, sind in NavigationController embedded (nur für die Navigation Bar eigentlich). Die Navigation Bar wird aber leider nicht mehr angezeigt, seit ich den UIPageViewController nutze.
Das zweite Problem ist, dass, wenn man beim letzten oder ersten VC in der Liste der VCs angekommen ist und weiter swiped, der Hintergrund erscheint (wie bei einem TableView, wenn man am unteren Ende weiter scrollt). Normalerweise kann man so etwas ja mit bounces=NO deaktivieren, so eine Option finde ich aber bei einem UIPageViewController nicht.
Hat jemand eine Idee wie ich das lösen kann?
Vielen Dank im Voraus
Ich möchte in meiner App eine Navigation ähnlich wie in der Snapchat App implementieren, so dass der User durch horizontales Swipen durch die verschiedenen VCs navigieren kann.
Ich mache das aktuell über einen UIPageViewController:
C-Quellcode
- #import "PageNavigationVC.h"
- @interface PageNavigationVC ()
- @end
- @implementation PageNavigationVC
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.vCIdentifiers = @[@"VC1", @"VC2", @"VC3", @"VC4"];
- self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
- self.pageViewController.dataSource = self;
- UIViewController *startingViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.vCIdentifiers[0]];
- NSArray *viewControllers = @[startingViewController];
- [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
- self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
- [self addChildViewController:_pageViewController];
- [self.view addSubview:_pageViewController.view];
- [self.pageViewController didMoveToParentViewController:self];
- }
- - (UIViewController *)getViewControllerFromClass:(Class)class isNext:(BOOL)next
- {
- NSInteger index = [self.vCIdentifiers indexOfObject:[NSString stringWithFormat:@"%@", class]];
- if (next)
- index+=1;
- else
- index-=1;
- if (index < 0 || index >= self.vCIdentifiers.count)
- return nil;
- else
- return [self.storyboard instantiateViewControllerWithIdentifier:self.vCIdentifiers[index]];
- }
- #pragma mark - Page View Controller Data Source
- - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
- {
- return [self getViewControllerFromClass:viewController.class isNext:NO];
- }
- - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
- {
- return [self getViewControllerFromClass:viewController.class isNext:YES];
- }
- - (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
- {
- return 0;
- }
- - (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
- {
- return 0;
- }
Das Navigieren durch das Swipen funktioniert auch schon korrekt, ich habe allerdings ein paar Probleme, die ich leider nicht lösen kann:
Die einzelnen VCs, durch die geswiped wird, sind in NavigationController embedded (nur für die Navigation Bar eigentlich). Die Navigation Bar wird aber leider nicht mehr angezeigt, seit ich den UIPageViewController nutze.
Das zweite Problem ist, dass, wenn man beim letzten oder ersten VC in der Liste der VCs angekommen ist und weiter swiped, der Hintergrund erscheint (wie bei einem TableView, wenn man am unteren Ende weiter scrollt). Normalerweise kann man so etwas ja mit bounces=NO deaktivieren, so eine Option finde ich aber bei einem UIPageViewController nicht.
Hat jemand eine Idee wie ich das lösen kann?
Vielen Dank im Voraus