概要
UIPageViewControllerの始点、終端のページを設定する。要は「これ以上はページをめくれないよ」という設定。
UIPageViewControllerはTableViewなどとは違ってcountを返すメソッドがないので、before、afterのメソッドで前後のページがあるか否かの判定を行いViewControllerを返す実装を行えばよい。
実装例
extension ViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate { // prev page func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { //次のページがない場合はnilを返す if( self.isPrevPage == false ){ return nil } let vc = PrevViewController() return vc } //next page func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { //次のページがない場合はnilを返す if( self.isNextPage == false ){ return nil } let vc = NextViewController() return vc } }
上記の実装だと、ジェスチャに反応して、ページめくりのアニメーションが発生するように思われたが、実際のところアニメーションは行われず始点、終端のページに対する期待した挙動となった。
リンク
リンク