Изменить страницы с помощью UIPageViewController с помощью кнопок в моем View Controllers swift 4 - PullRequest
0 голосов
/ 05 марта 2019

У меня есть UIPageViewController, который позволяет мне перемещаться между несколькими контроллерами представления.Мое приложение работает, проводя пальцем по моему экрану, но я хочу убрать жест смахивания, чтобы перемещаться между страницами для разных кнопок в моих представлениях. Это код, который я использую с моим просмотром страниц cxontroller

class RootPageViewController: UIPageViewController,UIPageViewControllerDataSource {

lazy var viewControllerList: [UIViewController] = {
    let storyBoard = UIStoryboard(name: "Main", bundle: nil)

    let VC1 = storyBoard.instantiateViewController(withIdentifier: "orangeVC")
    let VC2 = storyBoard.instantiateViewController(withIdentifier: "blueVC")
    let VC3 = storyBoard.instantiateViewController(withIdentifier: "purpleVC")

    return [VC1, VC2, VC3]
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.dataSource = self

    if let firstViewController = viewControllerList.first {
        self.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)            
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
    guard let vcIndex = viewControllerList.index(of: viewController) else {return nil}
    let previousIndex = vcIndex-1
    guard previousIndex >= 0 else {return nil}
    guard viewControllerList.count > previousIndex else {return nil}

    return viewControllerList[previousIndex]
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
    guard let vcIndex = viewControllerList.index(of: viewController) else {return nil}
    let nextIndex = vcIndex+1
    guard viewControllerList.count != nextIndex else {return nil}
    guard viewControllerList.count > nextIndex else {return nil}

    return viewControllerList[nextIndex]
}

}

1 Ответ

0 голосов
/ 05 марта 2019

Вам нужна только эта строка внутри действия кнопки

self.setViewControllers([viewControllerList[indexHere]], direction: .forward, animated:false, completion: nil)            
...