Переход к следующему ViewMontroller с помощью PageController swift - PullRequest
0 голосов
/ 23 июня 2019

У меня есть страница viewcontroller, где я отображаю несколько элементов, и в главном ViewController я хочу иметь возможность переходить на следующую страницу с помощью кнопок. Я добавил viewcontrollers в массив, но как меня поразило, как создать функцию, которая будет вызываться при нажатии кнопки «Далее» и «Назад».

ниже мой код

private var pageController: UIPageViewController!

    lazy var controllers: [UIViewController] = {
        let locVC = LocationVC()
        locVC.delegate = self
        let typeVC = TypeVC()
        typeVC.delegate = self
        return [locVC,
                typeVC]
    }() 

private func setupPageController() {

    self.pageController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    self.pageController.dataSource = self
    self.pageController.delegate = self
    pageController.view.translatesAutoresizingMaskIntoConstraints = false

    addChild(pageController)
    view.addSubview(pageController.view)
    NSLayoutConstraint.activate([
        pageController.view.topAnchor.constraint(equalTo: navView.bottomAnchor),
        pageController.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
        pageController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        pageController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
    pageController?.setViewControllers([controllers[0]], direction: .forward, animated: false)

}

func viewControllerAtIndex(index: Int) -> UIViewController? {
        if controllers.count == 0 || index >= controllers.count {
            return nil
        }

        return UIViewController()
    }

    func backBtnClicked() {

        guard currentIndex - 1 >= 0 else { return }
        currentIndex -= 1
        guard let startingViewController = viewControllerAtIndex(index: currentIndex) else { return }
        pageController.setViewControllers([startingViewController], direction: .reverse, animated: false)
    }

у всех viewcontroller есть переменная, которая var pageIndex: Int = 0 это то, что, я думаю, будет использовано для обнаружения текущей страницы

1 Ответ

0 голосов
/ 23 июня 2019

Вам нужно (например, перейти на первый vc в пейджере)

pageController.setViewControllers([controllers[index]], direction: .forward, animated: true, completion: nil)
...