Swift3にて、pageViewControllerを用いてページ移動させているのですが、一度通ったページに戻った時、スクロールビューの位置や表示が切り替わったままの状態になってしまっているのを元に戻したい(viewDidLoadで設定されていた最初の表示)のですがどうすればよいでしょうか?
tableViewからセルをタップし、そのindex番号によってcsvファイルからテキストを読み込んで各ページのテキスト内容だけ変えています。NavigationBarの戻るボタンからtableViewに戻ってセルを押してページに入る時は更新(初期表示)になっているのですが、pageViewControllerの方でも更新(初期表示)されるようにしたいです。
よろしくお願い致します。
■ サンプルコード Swift3
Swift3
1class PageViewController: UIPageViewController, UIPageViewControllerDataSource { 2 3 var data: [String] = [] 4 5 var selectedIndex = 0 6 7 var contentVCs = [UIViewController]() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 dataSource = self 13 14 for index in 0..<20 { 15 let contentVC = storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController 16 contentVC.labelStr = index.description // index確認用 17 contentVC.pageIndex = index 18 contentVC.data = data[index] 19 contentVCs.append(contentVC) 20 } 21 22 setViewControllers([contentVCs[selectedIndex]], direction: .forward, animated: true, completion: nil) 23 24 } // viewDidLoad()を閉じる 25 26 27 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 28 guard let index = contentVCs.index(of: viewController as! PageContentViewController), index > 0 else { 29 return nil 30 } 31 let previousIndex = index - 1 32 return contentVCs[previousIndex] 33 } 34 35 36 func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 37 guard let index = contentVCs.index(of: viewController as! PageContentViewController), index < contentVCs.count - 1 else { 38 return nil 39 } 40 let nextVC = contentVCs[index + 1] 41 return nextVC 42 } 43 44} // class()を閉じる 45
Swift3
1class PageContentViewController: UIViewController, UIScrollViewDelegate { 2 3 var pageIndex:Int = 0 4 var data:String? 5 6 var labelStr: String? 7 let indexPageLabel = UILabel() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 (略) 13 14 // indexPageラベル 15 indexPageLabel.frame = CGRect(x: 150, y: 10, width: 100, height: 30) 16 indexPageLabel.text = "(labelStr!)" 17 scrollView.addSubview(indexPageLabel) 18 19 20 // CSVファイルを読み込む 21 let csvArray = loadCSV("test") 22 23 //csvArrayの行をタップされた番号で取得 24 dayArray = csvArray[pageIndex].components(separatedBy: ";") 25 26 (略) 27 } 28} 29 30 31
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/15 06:55
2018/02/15 14:35
2018/02/16 12:22
2018/02/16 14:24
2018/02/17 03:03