以下のようにTutorialPageViewController
を記述しています。
swift
1import UIKit 2import Foundation 3 4class TutorialPageViewController: UIPageViewController { 5 6 let pageView: [String] = ["FirstViewController", "SecondViewController", "ThirdViewController"] 7 8 9 10 func getFirst() -> FirstViewController { 11 return storyboard!.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController 12 } 13 14 func getSecond() -> SecondViewController { 15 return storyboard!.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 16 } 17 18 func getThird() -> ThirdViewController { 19 return storyboard!.instantiateViewController(withIdentifier: "ThirdViewController") as! ThirdViewController 20 } 21 22 override func viewDidLoad() { 23 super.viewDidLoad() 24 self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil) 25 self.dataSource = self 26 // Do any additional setup after loading the view, typically from a nib. 27 } 28 29 override func didReceiveMemoryWarning() { 30 super.didReceiveMemoryWarning() 31 // Dispose of any resources that can be recreated. 32 } 33} 34 35extension TutorialPageViewController: UIPageViewControllerDataSource { 36 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 37 if viewController.isKind(of: ThirdViewController.self) { 38 return getSecond() 39 } else if viewController.isKind(of: SecondViewController.self) { 40 return getFirst() 41 } else { 42 return nil 43 } 44 } 45 46 func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 47 if viewController.isKind(of: FirstViewController.self) { 48 return getSecond() 49 } else if viewController.isKind(of: SecondViewController.self) { 50 return getThird() 51 } else { 52 return nil 53 } 54 } 55}
しかし実行するとFirstからSecondにいけるのですが、それ以降遷移することができません。
StoryBoardID
が正しく設定されているのは確認できました。何が間違っているのでしょうか?
デバッグ用にprintをつけると、FirstからSecondへ遷移させただけなのに2->3
が出力されました。
何が原因なのでしょうか?
3枚目に移動しようとしたときは、ランタイムエラーになりますか?2枚目から動かないだけですか?
2枚目から動きません。
エラーは特にありませんでした、、、