質問編集履歴

1 デバッグを報告

yumiyumi220

yumiyumi220 score 54

2018/06/09 15:30  投稿

PageViewControllerで二つ目のViewControllerに遷移するがそれ以降動けな
以下のように`TutorialPageViewController`を記述しています。
![イメージ説明](87f2efe23330c1f10ab36d67936996dd.png)
```swift
import UIKit
import Foundation
class TutorialPageViewController: UIPageViewController {
   
   let pageView: [String] = ["FirstViewController", "SecondViewController", "ThirdViewController"]
   
   
   
   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 viewDidLoad() {
       super.viewDidLoad()
       self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil)
       self.dataSource = self
       // Do any additional setup after loading the view, typically from a nib.
   }
   
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
}
extension TutorialPageViewController: UIPageViewControllerDataSource {
   func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
       if viewController.isKind(of: ThirdViewController.self) {
           return getSecond()
       } else if viewController.isKind(of: SecondViewController.self) {
           return getFirst()
       } else {
           return nil
       }
   }
   
   func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
       if viewController.isKind(of: FirstViewController.self) {
           return getSecond()
       } else if viewController.isKind(of: SecondViewController.self) {
           return getThird()
       } else {
           return nil
       }
   }
}
```
しかし実行するとFirstからSecondにいけるのですが、それ以降遷移することができません。
`StoryBoardID`が正しく設定されているのは確認できました。何が間違っているのでしょうか?
![イメージ説明](c9fd364e147df3ef7deb16e91a3d1662.png)
![イメージ説明](c9fd364e147df3ef7deb16e91a3d1662.png)
デバッグ用にprintをつけると、FirstからSecondへ遷移させただけなのに`2->3`が出力されました。
何が原因なのでしょうか?
![イメージ説明](6089fe957d914a0d6b28d43b78d2b550.png)
  • iOS

    7361 questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Swift

    14569 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る