2016-12-26 9 views
0

私はscrollview.Inのscrollviewでbaseviewコントローラを持っています。私は3つのviewcontrollersビュー(xib)を追加しています。私はhorizantal.Iの3つをスクロールできます。私の最初のビューコントローラでは、tablevieew.While私の3つのビューコントローラをすべて表示しています。しかし、私は私のテーブルビューのセルに触れると消えてしまいました.xcode 7.3と同じです。これはうまくいきました。しかし、xcode 8では機能しません。あなたはまた、メインコントローラの子コントローラとしてカスタムのViewControllerを追加する必要がありますscrollview上のカスタムのViewControllerのビューを追加しながら、私は私のサンプルコードscrollviewにViewControllerを追加する

let scrollViewWidth:CGFloat = self.scrollContainer.frame.width 
     let scrollViewHeight:CGFloat = self.scrollContainer.frame.height 
     let x = CGFloat(i) * scrollViewWidth 

     if i == 0{ 
      let qualification = EducationViewController (nibName: "EducationViewController", bundle: nil) 
      //qualification.view.frame.size.height = scrollViewHeight 
      //qualification.view.frame.size.width = scrollViewWidth 
      qualification.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(qualification.view) 
      qualification.didMove(toParentViewController: self) 
     } 
     else if i == 1{ 
      let state = StateRegistrationViewController (nibName: "StateRegistrationViewController", bundle: nil) 
      //state.view.frame.size.height = scrollViewHeight 
      // state.view.frame.size.width = scrollViewWidth 
      state.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(state.view) 
      state.view.backgroundColor = UIColor.red 
      state.didMove(toParentViewController: self) 
     } 
     else if i == 2{ 
      let exp = ExperienceViewController (nibName: "ExperienceViewController", bundle: nil) 
      // exp.view.frame.size.height = scrollViewHeight 
      // exp.view.frame.size.width = scrollViewWidth 
      exp.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(exp.view) 
      exp.view.backgroundColor = UIColor.orange 

      exp.didMove(toParentViewController: self) 
     }} 

答えて

0

を添付しています。

あなたのケースでは、あなたは、あなたが追加する必要がありますあなたのコード内であればelse節ごとなど3つのカスタムコントローラを持っているように:あなたのコードであり、それぞれのブロックで

self.addChildViewController(qualification) 
self.addChildViewController(state) 
self.addChildViewController(exp) 

を。

あなたのコードは次のようになります:

let scrollViewWidth:CGFloat = self.scrollContainer.frame.width 
     let scrollViewHeight:CGFloat = self.scrollContainer.frame.height 
     let x = CGFloat(i) * scrollViewWidth 

     if i == 0{ 
      let qualification = EducationViewController (nibName: "EducationViewController", bundle: nil) 
      //qualification.view.frame.size.height = scrollViewHeight 
      //qualification.view.frame.size.width = scrollViewWidth 
      qualification.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(qualification.view) 
      self.addChildViewController(qualification) 
      qualification.didMove(toParentViewController: self) 
     } 
     else if i == 1{ 
      let state = StateRegistrationViewController (nibName: "StateRegistrationViewController", bundle: nil) 
      //state.view.frame.size.height = scrollViewHeight 
      // state.view.frame.size.width = scrollViewWidth 
      state.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(state.view) 
      self.addChildViewController(state) 
      state.view.backgroundColor = UIColor.red 
      state.didMove(toParentViewController: self) 
     } 
     else if i == 2{ 
      let exp = ExperienceViewController (nibName: "ExperienceViewController", bundle: nil) 
      // exp.view.frame.size.height = scrollViewHeight 
      // exp.view.frame.size.width = scrollViewWidth 
      exp.view.frame.origin.x = x 
      self.scrollContainer!.addSubview(exp.view) 
      self.addChildViewController(exp) 
      exp.view.backgroundColor = UIColor.orange 

      exp.didMove(toParentViewController: self) 
     }} 
0
  1. let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let aViewController = storyboard.instantiateViewController(withIdentifier: "A") as! AViewController; 
    let bViewController = storyboard.instantiateViewController(withIdentifier: "B") as! BViewController; 
    let cViewController = storyboard.instantiateViewController(withIdentifier: "C") as! CViewController; 
    
  2. のViewControllerを開始配列

    let viewControllers = [aViewController, bViewController, cViewController] 
    
  3. 実行にviewControllersを追加するループいます追加するscrollView

    var idx:Int = 0 
    for viewController in viewControllers { 
    
        addChildViewController(viewController); 
        let originX:CGFloat = CGFloat(idx) * width; 
        viewController.view.frame = CGRect(x: originX, y: 0, width: width, height: height); 
        scrollView!.addSubview(viewController.view) 
        viewController.didMove(toParentViewController: self) 
        idx += 1; 
    } 
    

にviewControllersはすべて完了します!

関連する問題