从子ViewController偏移UIScrollView

时间:2016-03-21 21:29:30

标签: ios swift uiviewcontroller uiscrollview parentviewcontroller

我目前有一个UI的应用程序与Snapchat ScrollView类似。 MainViewController包含一个UIScroll,其中三个子ViewControllers被添加为子ViewControllers:

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
    }

我尝试在中间ViewController中添加两个按钮,它会将ScrollView偏移到左侧或右侧View Controller。我知道我可以在MainViewController中使用setContentOffset(),但我无法在子视图控制器中调用它。 self.presentingViewController和self.parentViewController都返回nil。

在子ViewController中为UIScrollView调用setContentOffset()的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这似乎是delegation的一个很好的用例。使用将更改的视图向ViewControllers添加委托,然后让您的父ViewController将自己作为委托。然后,您可以检查视图并相应地调整大小。