0

Ich habe derzeit eine Anwendung mit einer Benutzeroberfläche ähnlich Snapchat ScrollView. Die Mainviewcontroller enthält eine UIScroll, in dem drei Kind als Kind Viewcontrollers Viewcontrollers hinzugefügt werden:Offset UIScrollView von einem Kind ViewController

override func viewDidLoad() { 

    super.viewDidLoad() 
    scrollView.contentSize = CGSizeMake((self.view.bounds.width*3 + 4), self.view.bounds.height) 
    self.view.addSubview(scrollView) 

    let view1 = UIView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)) 
    scrollView.addSubview(view1) 
    let aVC = self.storyboard?.instantiateViewControllerWithIdentifier("One") 
    view1.addSubview(aVC!.view) 
    self.addChildViewController(aVC!) 

    let view2 = UIView(frame: CGRectMake((self.view.bounds.width), 0, self.view.bounds.width, self.view.bounds.height)) 
    scrollView.addSubview(view2) 
    let bVC = self.storyboard?.instantiateViewControllerWithIdentifier("Two") 
    view2.addSubview(bVC!.view) 
    self.addChildViewController(bVC!) 

    let view3 = UIView(frame: CGRectMake(2*view.bounds.width), 0, self.view.bounds.width, self.view.bounds.height)) 
    scrollView.addSubview(view3) 
    let cVC = self.storyboard?.instantiateViewControllerWithIdentifier("LocationViewController") 
    view3.addSubview(cVC!.view) 
    self.addChildViewController(cVC!) 

    scrollView.contentOffset = CGPointMake(self.view.frame.width, 0 
    } 

ich versucht, Tasten zwei der mittlere Viewcontroller, hinzuzufügen, die die Scroll versetzt wird, um entweder die linke oder rechte Ansicht Controller. Ich weiß, dass ich SetContentOffset() in MainViewController verwenden kann, aber ich kann das in den untergeordneten Ansichtscontrollern nicht aufrufen. Sowohl self.presentingViewController als auch self.parentViewController geben beide nil zurück.

Wie kann setContentOffset() für den UIScrollView innerhalb eines untergeordneten ViewControllers am besten aufgerufen werden?

Antwort

0

Dies scheint ein guter Anwendungsfall für delegation. Fügen Sie dem ViewControllers einen Delegaten mit Ansichten hinzu, die sich ändern werden, und dann übergibt sich Ihr übergeordneter ViewController als den Delegaten. Dann können Sie die Ansichten überprüfen und die Größe entsprechend anpassen.