以下のようにページビューコントローラを設定しています。
swift
1import UIKit 2import Foundation 3 4class PageViewController: UIPageViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil) 9 self.dataSource = self 10 } 11 12 func getFirst() -> FirstViewController { 13 return storyboard!.instantiateViewController(withIdentifier: "FirstController") as! FirstViewController 14 } 15 16 func getSecond() -> SecondViewController { 17 return storyboard!.instantiateViewController(withIdentifier: "SecondController") as! SecondViewController 18 } 19 20 func getThird() -> ThirdViewController { 21 return storyboard!.instantiateViewController(withIdentifier: "ThirdController") as! ThirdViewController 22 } 23 24 override func didReceiveMemoryWarning() { 25 super.didReceiveMemoryWarning() 26 } 27} 28 29extension PageViewController : UIPageViewControllerDataSource { 30 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 31 return getSecond() 32 } 33 34 func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 35 return getThird() 36 } 37}
と設定し試しに
swift
1func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 2 return getThird() 3 }
でgetThird
をgetSecond()
に設定しても動いたので問題なさそうです。
しかしながら、画面遷移の方は
一回Thirdに遷移(青)に遷移して戻ろうとするとgetSecnod
と思いきや、firstに戻ってしまい、また、Thirdにして、さらに右にやると(進めないのだが)、ちゃんとThirdに遷移したと判断するのか、次は左にドラッグするとsecondにいくことができます。
何が問題なのでしょうか?
個人的に思っているのは「完全に遷移する」のが大事なのかなと思います。
Thirdになって、指を離してまた左にするとなぜかfirstになっています。
しかし、Thirdになって、さらに左にスワイプしてから左にスワイプするとsecondになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/09 08:24
2018/06/09 08:36