2017-01-18 6 views
0

ビューを前後にスクロールすることはできますが、ビューをループしてViewController3にいるときにスクロールし、ループを作成するにはViewController1で前方にスクロールすることはできません。どうすればいい?UIScrollViewでループを作成する

以下のコードは私がこれまで行ってきたものです。

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let vc0 = ViewController0(nibName: "ViewController0", bundle: nil) 

    var frame0 = vc0.view.frame 
    frame0.origin.x = self.view.frame.size.width 
    vc0.view.frame = frame0 

    self.addChildViewController(vc0) 
    self.scrollView.addSubview(vc0.view) 
    vc0.didMove(toParentViewController: self) 

    let vc1 = ViewController1(nibName: "ViewController1", bundle: nil) 

    var frame1 = vc1.view.frame 
    frame1.origin.x = self.view.frame.size.width 
    vc1.view.frame = frame1 

    self.addChildViewController(vc1) 
    self.scrollView.addSubview(vc1.view) 
    vc1.didMove(toParentViewController: self) 

    let vc2 = ViewController2(nibName: "ViewController2", bundle: nil) 

    var frame2 = vc2.view.frame 
    frame2.origin.x = self.view.frame.size.width * 2 
    vc2.view.frame = frame2 

    self.addChildViewController(vc2) 
    self.scrollView.addSubview(vc2.view) 
    vc2.didMove(toParentViewController: self) 

    let vc3 = ViewController3(nibName: "ViewController3", bundle: nil) 

    var frame3 = vc3.view.frame 
    frame3.origin.x = self.view.frame.size.width * 3 
    vc1.view.frame = frame3 

    self.addChildViewController(vc3) 
    self.scrollView.addSubview(vc3.view) 
    vc3.didMove(toParentViewController: self) 

    self.scrollView.contentSize = CGSize(width: Double(self.view.frame.size.width * 4), height: Double(self.view.frame.size.height - 66)) 

} 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

答えて

0

は、実際に私は、あなたが完全にUIScrollViewのの使用を削除し、代わりにUIPageViewControllerを使用することをお勧めしたいです。一度に1ページしか供給する必要がなく、記述する種類の無限ループまたはループ・スクロールを行うのは簡単です。なぜなら、ループ・シリーズの「次の」ビュー・コントローラーを毎回提供し続けているからですそれが求められます。それだけでなく、それはあなたがそれをやっている方法で間違っていることではない)あなたのために親子のダンス全体を処理します。

+0

よろしくお願いいたします。代わりにUIPageViewControllerを使用する方法の詳細を教えてください。 –

+0

ここにダウンロード可能なサンプルプロジェクトがあります:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p311pageController/ch19p626pageController/AppDelegate.swiftあなたの場合、3番目のVCの後に 'nil'を返す代わりに、あなたはループしている最初のVCとプレストを返すだけです。 – matt

+0

ありがとう、私はそれを見てみましょう。 –

関連する問題