2017-01-11 8 views
1

私はページコントローラを学び、ページベースのアプリケーションテンプレートを使って空のアプリケーションを作成しました。デフォルトでは、左から右にスクロールできる12ヶ月のページが作成されます。Xcodeの "ページベースアプリケーション"プロジェクトテンプレートにPageControllerがあるのはなぜですか?

ストーリーボードには、ページビューコントローラー付きのページビューコントローラーシーンがあります。ただし、コードには、このコントローラをルートコントローラでプログラムで作成するコマンドがあります。つまり

var pageViewController: UIPageViewController? 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    // Configure the page view controller and add it as a child view controller. 
    self.pageViewController = UIPageViewController(transitionStyle: .pageCurl, navigationOrientation: .horizontal, options: nil) 
    self.pageViewController!.delegate = self 

    let startingViewController: DataViewController = self.modelController.viewControllerAtIndex(0, storyboard: self.storyboard!)! 
    let viewControllers = [startingViewController] 
    self.pageViewController!.setViewControllers(viewControllers, direction: .forward, animated: false, completion: {done in }) 

    self.pageViewController!.dataSource = self.modelController 

    self.addChildViewController(self.pageViewController!) 
    self.view.addSubview(self.pageViewController!.view) 

    // Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages. 
    var pageViewRect = self.view.bounds 
    if UIDevice.current.userInterfaceIdiom == .pad { 
     pageViewRect = pageViewRect.insetBy(dx: 40.0, dy: 40.0) 
    } 
    self.pageViewController!.view.frame = pageViewRect 

    self.pageViewController!.didMove(toParentViewController: self) 
} 

実際、ストーリーボードからページビューコントローラーを削除すると、アプリは以前と同じように機能します。

私は、これが使用されていないと思われる理由をストーリーボードに記載する理由を理解しようとしています。また、ストーリーボードを使用するのではなく、プログラムでページビューコントローラーを作成するのは良い理由ですか?

答えて

0

ストーリーボードの内部UIViewControllerサブタイトルが標準であり、UIPageViewControllerではありません。 UIPageViewControllerがコードで作成され、このRootViewControllerにサブビューとして追加されます。 RootViewControllerはUIPageViewControllerを表示し、そのデリゲートとして機能します。ストーリーボードから何かを削除しても正しく動作しないと思いますが、これについては確かですか?ストーリーボードにUIPageViewControllerというインスタンスはありません。

+0

あなたは正しいです。私の間違い。私はストーリーボードに自分自身を追加しておく必要があります。私は今後尋ねる前にもっと慎重にチェックするつもりです:) – Julian7

関連する問題