Sök…


Introduktion

UIPageViewController ger användarna möjlighet att enkelt övergå mellan flera vyer med hjälp av en svepgest. För att skapa en UIPageViewController måste du implementera UIPageViewControllerDataSource-metoderna. Dessa inkluderar metoder för att returnera både UIPageViewController före och efter den nuvarande UIPageViewController tillsammans med presentationCount och presentationIndex-metoderna.

Syntax

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

Anmärkningar

Apple Developer-referens här

Skapa en horisontell sökning UIPageViewController programmatiskt

  1. Init array av visningskontrollanter som hanteras av UIPageViewController. Tillsätta en bas vy kontrollerklass som har egenskapen identifier som kommer att användas för att identifiera visa regulatorer när man arbetar med UIPageViewController datakäll metoder. Låt synkontrollerna arva från den basklassen.
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. Skapa UIPageViewController-instans.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. Datakälla är aktuell klass som måste implementera UIPageViewControllerDataSource protokollet.
pageViewController.dataSource = self;
  1. setViewControllers lägger bara till första visningskontrollern, nästa kommer att läggas till stacken med datakällmetoder
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. Lägg till UIPageViewController som en barnvynkontroll så att den får från sin överordnade visningskontrollers appearance och rotation .
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. Implementera UIPageViewControllerDataSource-metoder
- (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. Verktygsmetod som returnerar en visningskontroller med ett index, om indexet är utanför gränsen returnerar det noll.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

Ett enkelt sätt att skapa horisontella sidvisningsstyrenheter (oändliga sidor)

  1. Låt oss skapa ett nytt projekt, jag väljer Single View-applikation för bättre demonstration

ange bildbeskrivning här

  1. Dra en sidvyskontroller till storyboardet, det finns två saker du bör ändra efter det:
    1. Ställ in sidvynskontrollern som initialvynskontroller
    2. Ändra övergångsstilen för att bläddra

ange bildbeskrivning här

  1. Och du måste skapa en UIPageViewController-klass och sedan ange den som anpassad klass för sidvisningsstyrenheten på storyboard

  2. Klistra in den här koden i din UIPageViewController-klass, du bör få en färgrik oändlig sidvisningsapp :)

    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
        }
    }
    

Så här ser det slutliga projektet ut, du får en visningskontroller med olika färger för varje rullning:

ange bildbeskrivning här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow