2017-04-16 6 views
0

私はviewpagercontrollerを持っており、3つの事前設定されたUIViewControllerで正しく動作させていますが、最初にUIViewControllerを表示すると、最初に2番目のUIViewControllerこれを達成するのに問題があります。ここでViewPagerControllerを2番目のUIViewControllerで開始する

は私のviewDidLoad(ある)ここで

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.dataSource = self 
    if let firstViewController = orderedViewControllers.first { 
     setViewControllers([firstViewController], 
          direction: .forward, 
          animated: true, 
          completion: nil) 
    } 

} 

は私のorderedViewControllers

private(set) lazy var orderedViewControllers: [UIViewController] = { 
    return [self.newProfileViewController(vc: "UserContentViewController"), 
      self.newProfileViewController(vc: "ProfileViewController"), 
      self.newProfileViewController(vc: "NotificationViewController")] 
}() 

答えて

1

ご希望のインデックス、

func scrollToViewController(index newIndex: Int) { 
    if let firstViewController = viewControllers?.first, 
     let currentIndex = orderedViewControllers.indexOf(firstViewController) { 
      let direction: UIPageViewControllerNavigationDirection = newIndex >= currentIndex ? .Forward : .Reverse 
      let nextViewController = orderedViewControllers[newIndex] 
      scrollToViewController(nextViewController, direction: direction) 
    } 
} 
+0

私はこのようにスクロールしたくないと思いますが、これは視覚的に2番目のVCにアニメーション化されます。私は、彼らはそれがちょうど2番目のビューコントローラにロードしたいと思います。 –

0

でこの機能をできているすべてを行う必要がありますビューコントローラーを設定するコードの最初のビットを変更します。

これに

if let firstViewController = orderedViewControllers.first { 
    setViewControllers([firstViewController], 
         direction: .forward, 
         animated: true, 
         completion: nil) 
} 

だから、これを変更

if orderedViewControllers.count > 0 { 
    let secondViewController = orderedViewControllers[1] 
     setViewControllers([secondViewController], 
         direction: .forward, 
         animated: false, 
         completion: nil) 
} 

この処理する必要がありますページビューコントローラ上で、あなたのデリゲートメソッドをすぐに第2のビューコントローラへのページビューコントローラを設定します前後のスワイプして、正しいView Controllerをロードします。

関連する問題