swift3で、tableViewのセルからindex番号にて画面遷移をし、遷移先のViewController同士だけでスワイプでページが移動できるようにし、その際に値を一緒に渡したいのですが、やり方が分からず、行き詰まっております。
tableviewにはNavigation ControllerをEmbedしており、セルから遷移した各viewからはbackボタンでtableViewに戻れるようにしています。
セルから遷移させるviewは5つあり(FirstVC~FifthVC)、この5つのview間をページめくりさせ、次のページ内容を表示させるために必要な値(セルから遷移する際に使ったindex番号)を渡したいです。
ご教授頂ければ大変助かります。
宜しくお願い致します。
■ 試して見たこと
・PageViewControllerを使おうとしたのですが、先頭(is Initial)にしていないからか、全く反映されておらず、途中のページからPageViewControllerを利用する方法が分からず断念。
・Swipe Gesture Recognizerを使ってみたら、右開きしかできず、左開きの方法が分からず断念。
PageViewControllerの使い方を記述してあるサイトを参考にして記述したコードです。
この状態ではページ移動は反映されていません。
xcode8 swift3 使用
//PageViewController.swift //swift3 import UIKit class PageViewController: UIPageViewController { override func viewDidLoad() { super.viewDidLoad() self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil) self.dataSource = self } func getFirst() -> FirstViewController { return storyboard!.instantiateViewController(withIdentifier: "ViewController") as! FirstViewController } func getSecond() -> SecondViewController { return storyboard!.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController } func getThird() -> ThirdViewController{ return storyboard!.instantiateViewController(withIdentifier: "ThirdViewController") as! ThirdViewController } func getFourth() -> FourthViewController{ return storyboard!.instantiateViewController(withIdentifier: "FourthViewController") as! FourthViewController } func getFifth() -> FifthViewController{ return storyboard!.instantiateViewController(withIdentifier: "FifthViewController") as! FifthViewController } } extension PageViewController : UIPageViewControllerDataSource { func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { if viewController.isKind(of: FifthViewController.self) { // 5 -> 4 return getFourth() } else if viewController.isKind(of: FourthViewController.self) { // 4 -> 3 return getThird() } else 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 if viewController.isKind(of: ThirdViewController.self) { // 3 -> 4 return getFourth() } else if viewController.isKind(of: FourthViewController.self) { // 4 -> 5 return getFifth() }else{ // 3 -> end of the road return nil } } } コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/11 15:44
2017/12/13 00:48
2017/12/13 07:32