2016-10-08 61 views
1

這是我的設置。我有一個UIScrollView在我的主視圖控制器的頂部,我加載了多個視圖控制器。我還有一個Add按鈕,它將使用Push segue呈現一個新的視圖控制器。如何在UIScrollView中加載UIViewController

我希望這個視圖控制器也只加載滾動視圖的頂部而不是全屏。
我試過2個不同的事情到現在爲止,但沒有工作:滾動視圖中

  1. 添加視圖控制器prepareForSegue

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
        let addViewController = segue.destination as! AddViewController 
    
        addChildViewController(addViewController) 
        addViewController.view.frame = CGRect(x: 0, y: 0, width: width, height: height) 
        scrollView.addSubview(addViewController.view) 
        didMove(toParentViewController: self) 
    } 
    
  2. 添加視圖控制器中的UIButton行爲:

@IBAction func addDidTouch(_ sender:AnyObject){

let addViewController = AddViewController() 

    addChildViewController(addViewController) 
    addViewController.view.frame = CGRect(x: 0, y: 0, width: width, height: height) 
    scrollView.addSubview(addViewController.view) 
    didMove(toParentViewController: self) 
} 

這兩個解決方案崩潰我的應用程序。
有沒有一種方法可以正確實施?

+0

看看Apple的[實現容器視圖控制器](https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html) –

回答

4

您不能在同一視圖控制器上推送任何視圖控制器,您需要將容器視圖添加到您的滾動視圖。然後如果你想要的話,你可以滾動添加按鈕的滾動滾動,這樣看起來好像新的控制器被添加到它。這是可以做到這樣的,

scrollView.contentSize = CGSize(width: screenWidth*3, height: 1) 

    let first = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("FirstViewController") as! FirstViewController 

    let second = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController 

    let third = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("ThirdViewController") as! ThirdViewController 

    self.addChildViewController(first) 
    self.scrollView.addSubview(first.view) 
    first.willMoveToParentViewController(self) 

    self.addChildViewController(second) 
    self.scrollView.addSubview(second.view) 
    second.willMoveToParentViewController(self) 

    self.addChildViewController(third) 
    self.scrollView.addSubview(third.view) 
    third.willMoveToParentViewController(self) 

    first.view.frame.origin = CGPointZero 
    second.view.frame.origin = CGPoint(x: screenWidth, y: 0) 
    third.view.frame.origin = CGPoint(x: 2*screenWidth, y: 0) 

您可能需要禁用滾動視圖的滾動,如果你想僅僅只用你的添加按鈕,添加(移動)到另一個視圖控制器。

相關問題