Zoeken…


Invoering

UIPageViewController biedt gebruikers de mogelijkheid om eenvoudig tussen verschillende weergaven te schakelen met behulp van een veegbeweging. Om een UIPageViewController te maken, moet u de UIPageViewControllerDataSource-methoden implementeren. Deze omvatten methoden om zowel UIPageViewController voor als na de huidige UIPageViewController te retourneren, samen met de methoden PresentationCount en PresentationIndex.

Syntaxis

  1. UIPageViewControllerTransitionStyle
  2. UIPageViewControllerNavigationOrientation
  3. UIPageViewControllerSpineLocation
  4. UIPageViewControllerNavigationDirection

Opmerkingen

Apple Developer referentie hier

Maak een horizontale paging UIPageViewController programmatisch

  1. Eerste reeks viewcontrollers die worden beheerd door UIPageViewController. Voeg een base view controller klasse die eigenschap heeft identifier die zal worden gebruikt om het beeld te controllers te identificeren bij het werken met UIPageViewController gegevensbron methoden. Laat de viewcontrollers erven van die basisklasse.
UIViewController *firstVC = [[UIViewController alloc] init]; 
firstVC.identifier = 0  
UIViewController *secondVC = [[UIViewController alloc] init];   
secondVC.identifier = 1
NSArray *viewControllers = [[NSArray alloc] initWithObjects: firstVC, secondVC, nil];
  1. Maak een instantie van UIPageViewController.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. Gegevensbron is de huidige klasse die het UIPageViewControllerDataSource protocol moet implementeren.
pageViewController.dataSource = self;
  1. setViewControllers voegen alleen de eerste weergave-controller toe, daarna worden ze aan de stapel toegevoegd met behulp van gegevensbronmethoden
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. Voeg UIPageViewController toe als onderliggende weergavecontroller, zodat deze van de appearance en rotation van de bovenliggende weergavecontroller ontvangt.
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. UIPageViewControllerDataSource-methoden implementeren
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerBeforeViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index--;
    return [self childViewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index++;
    return [self childViewControllerAtIndex:index];
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
    return [viewControllers count];
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
    return index;
}
  1. Hulpprogramma die een weergavecontroller retourneert met behulp van een index. Als de index buiten de grenzen valt, retourneert deze nul.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

Een eenvoudige manier om horizontale paginaweergavecontrollers (oneindige pagina's) te maken

  1. Laten we een nieuw project maken, ik kies voor Single View Application voor betere demonstratie

voer hier de afbeeldingsbeschrijving in

  1. Sleep een paginaweergavecontroller naar het storyboard, er zijn 2 dingen die u daarna moet veranderen:
    1. Stel de paginaweergavecontroller in als initiële weergavecontroller
    2. Wijzig de overgangsstijl om te bladeren

voer hier de afbeeldingsbeschrijving in

  1. En u moet een UIPageViewController-klasse maken en deze vervolgens instellen als aangepaste klasse van de paginaweergavecontroller op het storyboard

  2. Plak deze code in uw UIPageViewController-klasse, u zou een kleurrijke oneindige paged app moeten krijgen :)

    class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
    
        override func viewDidLoad() {
            self.dataSource = self
            let controller = createViewController()
            self.setViewControllers([controller], direction: .forward, animated: false, completion: nil)
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func createViewController() -> UIViewController {
            var randomColor: UIColor {
                return UIColor(hue: CGFloat(arc4random_uniform(360))/360, saturation: 0.5, brightness: 0.8, alpha: 1)
            }
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "View Controller")
            controller.view.backgroundColor = randomColor
            return controller
        }
    }
    

Dit is hoe het uiteindelijke project eruit ziet, je krijgt een viewcontroller met verschillende kleuren bij elke scroll:

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow