facebook twitter hatena line email

Ios/swift/UIPageViewController

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

UIPageViewControllerとは

横スワイプによるページ送り

サンプル

  1. 初期のViewControllerとは別に2つUIViewControllerをstoryboardに追加する
  2. それぞれクラス名をViewControllerとSecondViewControllerとThirdControllerとする
  3. それぞれのStroyboardIdをFirstViewControllerIdとSecondViewControllerIdとThirdViewControllerIdとする
  4. UIPageViewControllerをstoryboardに追加する
  5. 追加したUIPageViewControllerのクラス名をPageViewControllerとする
  6. PageViewControllerを初期起動するように"Is InItial View Controller"をonにする
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
   override func viewDidLoad() {
       super.viewDidLoad()
       self.setViewControllers([getFirstViewController()], direction: .Forward, animated: true, completion: nil)
       self.dataSource = self
   }
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }
   private func getFirstViewController() -> UIViewController {
       return storyboard!.instantiateViewControllerWithIdentifier("FirstViewControllerId")
   }
   private func getSecondViewController() -> UIViewController {
       return storyboard!.instantiateViewControllerWithIdentifier("SecondViewControllerId")
   }
   private func getThirdViewController() -> UIViewController {
       return storyboard!.instantiateViewControllerWithIdentifier("ThirdViewControllerId")
   }
   // 前へ
   func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
       if viewController.isKindOfClass(ThirdViewController) {
           return getSecondViewController()
       } else if viewController.isKindOfClass(SecondViewController) {
           return getFirstViewController()
       } else {
           return nil
       }
   }
   // 次へ
   func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
       if viewController.isKindOfClass(ViewController) {
           return getSecondViewController()
       } else if viewController.isKindOfClass(SecondViewController) {
           return getThirdViewController()
       } else {
           return nil
       }
   }
}

参考:http://qiita.com/Takeshi_Akutsu/items/dbf54df8e8a50e8ed5be

ページ送りのアニメーションスタイルを"紙めくり"から"スクロール"に変更する方法

storyboardのPageViewControllerのプロパティのtransition_styleを"Page Curl"から"Scroll"に

参考:http://stackoverflow.com/questions/24577403/programmatically-set-uipageviewcontroller-transition-style-to-scroll