2017-01-18 11 views
0

Ich kann in den Ansichten vor und zurück blättern, aber ich kann die Ansichten nicht loopen, so dass es zurück scrollt, wenn ich auf ViewController3 bin und auf ViewController1 weiterleiten, um eine Schleife zu erstellen. Wie würde ich das tun?Erstellen einer Schleife auf UIScrollView

Der Code unten ist was ich bisher gemacht habe.

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. 
} 

}

Antwort

0

Eigentlich würde ich vorschlagen, dass Sie die Verwendung von UIScrollView fallen zusammen und verwenden UIPageViewController statt. Es macht diese Art der Sache trivial, weil Sie nur eine Seite auf einmal liefern müssen, und endloses oder loopendes Scrollen der Art, die Sie beschreiben, ist einfach, weil Sie jedes Mal den "nächsten" View-Controller in der Looping-Serie liefern sind darum gebeten. Außerdem behandelt es den ganzen Eltern-Kind-Tanz für dich (nicht, dass irgendetwas daran falsch ist, wie du es tust).

+0

Ok, danke. Könnten Sie mir bitte mehr Details darüber geben, wie Sie stattdessen den UIPageViewController verwenden? –

+0

Hier ist ein Beispielprojekt zum Herunterladen: https://github.com/mattnub/Programming-iOS-Book-Examples/blob/master/bk2ch06p311pageController/ch19p626pageController/AppDelegate.swift In Ihrem Fall, anstatt 'nil' nach dem dritten VC , du würdest einfach die erste VC zurückgeben und presto, du liegst. – matt

+0

Danke, ich schaue mir das an. –

Verwandte Themen