

UIPageViewControllerを使用して横スワイプで画面遷移させることはできたのですが、今後画面の上部に固定ボタンを追加して、そのボタンでも画面遷移できるようにしたいと考えておりますが、実装方法が不明のため、ご教授願います。

■用意したファイル  
FirstViewController.swift（中身はデフォルトです）  
SecondViewController.swift（中身はデフォルトです）  
ThirdViewController.swift（中身はデフォルトです）  
PageViewController.swift（UIPageViewControllerクラスを継承したファイル）

■実装コード  
PageViewController.swift

[code]

    import UIKit
    
    class PageViewController: UIPageViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil)
            self.dataSource = self as UIPageViewControllerDataSource //追加
        }
    
        func getFirst() -> FirstViewController {
            return storyboard!.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController
        }
    
        func getSecond() -> SecondViewController {
            return storyboard!.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        }
    
        func getThird() -> ThirdViewController {
            return storyboard!.instantiateViewController(withIdentifier: "ThirdViewController") as! ThirdViewController
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
    
    //以下追加
    extension PageViewController : UIPageViewControllerDataSource {
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            if viewController.isKind(of: ThirdViewController.self) {
                // 3 -> 2
                return getSecond()
            } else if viewController.isKind(of: SecondViewController.self) {
                // 2 -> 1
                return getFirst()
            } else {
                // 1 -> end of the road
                return nil
            }
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            if viewController.isKind(of: FirstViewController.self) {
                // 1 -> 2
                return getSecond()
            } else if viewController.isKind(of: SecondViewController.self) {
                // 2 -> 3
                return getThird()
            } else {
                // 3 -> end of the road
                return nil
            }
        }
    }
    
[/code]

■現状の画面  
[![画像の説明をここに入力](https://i.stack.imgur.com/viJT8.jpg)](https://i.stack.imgur.com/viJT8.jpg)

■現状のMain.storyboard  
[![画像の説明をここに入力](https://i.stack.imgur.com/1VbFi.png)](https://i.stack.imgur.com/1VbFi.png)

■実現したい画面  
[![画像の説明をここに入力](https://i.stack.imgur.com/zZz48.jpg)](https://i.stack.imgur.com/zZz48.jpg)

■参考にしたサイト  
<https://qiita.com/Takeshi_Akutsu/items/dbf54df8e8a50e8ed5be>


CC BY-SA 3.0
2018-02-04T07:06:10.637
41450
2018-02-07T05:06:40.847
2018-02-05T14:01:42.820
8489
8489
question
swift swift3
UIPageViewControllerに固定ボタンを追加したい