Поиск…


Вступление

UIPageViewController предоставляет пользователям возможность легко переключаться между несколькими видами с помощью жестов салфетки. Чтобы создать UIPageViewController, вы должны реализовать методы UIPageViewControllerDataSource. К ним относятся методы возврата как UIPageViewController до, так и после текущего UIPageViewController вместе с методами presentationCount и presentationIndex.

Синтаксис

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

замечания

Ссылка Apple Developer здесь

Создавать горизонтальный пейджинг UIPageViewController

  1. Init массива контроллеров представлений, которые будут управляться UIPageViewController. Добавьте класс контроллера базового представления, который имеет identifier свойства, который будет использоваться для идентификации контроллеров представлений при работе с методами источника данных UIPageViewController. Пусть контроллеры представления наследуют этот базовый класс.
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. Создайте экземпляр UIPageViewController.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. Источником данных является текущий класс, который должен реализовывать протокол UIPageViewControllerDataSource .
pageViewController.dataSource = self;
  1. setViewControllers добавит только первый контроллер представления, следующий будет добавлен в стек с использованием методов источника данных
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. Добавьте UIPageViewController в качестве контроллера детского представления, чтобы он получал от него appearance вид контроллера appearance и события rotation .
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. Внедрение методов UIPageViewControllerDataSource
- (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. Метод Utility, который возвращает контроллер представления с использованием индекса, если индекс не соответствует границам, он возвращает nil.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

Простой способ создания горизонтальных диспетчеров просмотра страниц (бесконечные страницы)

  1. Давайте создадим новый проект, я выбираю приложение Single View для лучшей демонстрации

введите описание изображения здесь

  1. Перетащите контроллер просмотра страницы в раскадровку, после чего вам нужно изменить две вещи:
    1. Установите контроллер просмотра страницы в качестве начального контроллера представления
    2. Измените стиль перехода на прокрутку

введите описание изображения здесь

  1. И вам нужно создать класс UIPageViewController, а затем установить его как пользовательский класс контроллера просмотра страницы на раскадровке

  2. Вставьте этот код в свой класс UIPageViewController, вы должны получить красочное бесконечное выгружаемое приложение :)

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

Вот как выглядит последний проект, с каждым свитком вы получаете контроллер вида с разным цветом:

введите описание изображения здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow