Suche…


Einführung

Mit UIPageViewController können Benutzer mithilfe einer Wischgeste problemlos zwischen verschiedenen Ansichten wechseln. Um einen UIPageViewController erstellen zu können, müssen Sie die Methoden UIPageViewControllerDataSource implementieren. Dazu gehören Methoden, um sowohl den UIPageViewController als auch vor dem aktuellen UIPageViewController zusammen mit den Methoden presentationCount und presentationIndex zurückzugeben.

Syntax

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

Bemerkungen

Apple-Entwicklerreferenz hier

Erstellen Sie programmgesteuert einen horizontalen Paging-UIPageViewController

  1. Init Array von View-Controllern, die von UIPageViewController verwaltet werden. Hinzufügen eine Basis View - Controller - Klasse , die Eigenschaft hat identifier , die verwendet wird , um zu identifizieren , wenn Ansicht - Controller mit UIPageViewController Datenquelle Methoden arbeiten. Lassen Sie die View-Controller von dieser Basisklasse erben.
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. Erstellen Sie eine UIPageViewController-Instanz.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. Datenquelle ist die aktuelle Klasse, die das UIPageViewControllerDataSource Protokoll implementieren UIPageViewControllerDataSource .
pageViewController.dataSource = self;
  1. setViewControllers fügt nur den ersten View-Controller hinzu, der nächste wird mithilfe von Datenquellenmethoden zum Stack hinzugefügt
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. Fügen Sie UIPageViewController als untergeordneter Ansichts-Controller hinzu, damit er von seinem übergeordneten Ansichts-Controller- appearance und rotation empfangen wird.
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. Implementieren von UIPageViewControllerDataSource-Methoden
- (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. Dienstprogrammmethode, die einen View-Controller mit einem Index zurückgibt, wenn der Index außerhalb der Grenzen liegt, gibt er null zurück.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

Eine einfache Möglichkeit zum Erstellen horizontaler Seitenansichts-Controller (unendliche Seiten)

  1. Lassen Sie uns ein neues Projekt erstellen, wähle ich Single View Application zur besseren Demonstration

Geben Sie hier die Bildbeschreibung ein

  1. Ziehen Sie einen Controller für die Seitenansicht auf das Storyboard. Es gibt zwei Dinge, die Sie danach ändern sollten:
    1. Legen Sie den Seitensichtcontroller als anfänglichen Viewcontroller fest
    2. Ändern Sie den Übergangsstil in einen Bildlauf

Geben Sie hier die Bildbeschreibung ein

  1. Sie müssen eine UIPageViewController-Klasse erstellen und diese dann als benutzerdefinierte Klasse des Seitensichtcontrollers im Storyboard festlegen

  2. Fügen Sie diesen Code in Ihre UIPageViewController-Klasse ein. Sie sollten eine farbenfrohe, unendliche Seitenanwendung erhalten :)

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

So sieht das endgültige Projekt aus: Mit jedem Bildlauf erhalten Sie einen View-Controller mit unterschiedlichen Farben:

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow