ios - subview scroll is not working SWIFT -


goal: make viewcontroller have multiple pages , can swapped through segmented controller, pages content scrollable vertically

details:

  • i made pagviewcontroller , embedded subview main viewcontroller

    //add pageviewcontroller subview viewcontroller if let vc = storyboard?.instantiateviewcontrollerwithidentifier("profileeditcontroller"){      self.addchildviewcontroller(vc)     self.view.addsubview(vc.view)      edittabs = vc as! uipageviewcontroller     edittabs.datasource = self     edittabs.delegate = self      //define first page     edittabs.setviewcontrollers([pagesatindexpath(0)!], direction:.forward, animated: true, completion: nil)     edittabs.didmovetoparentviewcontroller(self)      //bring segmented view buttons front of pageviews     self.view.bringsubviewtofront(self.toptabs) } 
  • i called pageviewcontroller functions, , adding pages through restoration identifiers

  • i managed segmented view controller getting pageindex , setting viewcontroller this:

    edittabs.setviewcontrollers([pagesatindexpath(0)!], direction:.reverse, animated: true, completion: nil) 
  • in story board sub pages has scroll view inside hold content

  • i tested subpages scroll view calling through segue , working fine

case:

  • everything work fine scroll view of subpages not working @ all

how solve issue? guidelines appreciated

thanks,

  1. i have created view controller pageviewcontroller 3 view controllers have scroll view in it. works fine.

    import uikit class viewcontroller: uiviewcontroller, uipageviewcontrollerdatasource {

    var viewcontrollers : [uiviewcontroller]? override func viewdidload() {     super.viewdidload()     createpageview() }  func createpageview() {      setupviewcontrollers()      let pageviewcontroller = uipageviewcontroller(transitionstyle: .scroll, navigationorientation: .horizontal, options: nil)     pageviewcontroller.datasource = self     pageviewcontroller.setviewcontrollers([(viewcontrollers?[0])!] , direction: .forward, animated: false, completion: nil)     pageviewcontroller.view.frame = cgrect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height);     pageviewcontroller.view.frame = cgrect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height);     addchildviewcontroller(pageviewcontroller)     view.addsubview(pageviewcontroller.view)     pageviewcontroller.didmove(toparentviewcontroller: self)     pageviewcontroller.view.backgroundcolor = uicolor.blue }  func setupviewcontrollers() {     let firstvc = uiviewcontroller()     firstvc.view.tag = 100     firstvc.view.backgroundcolor = uicolor.red     addscrollview(bgview: firstvc.view)     let secondvc = uiviewcontroller()     secondvc.view.tag = 101     secondvc.view.backgroundcolor = uicolor.brown     addscrollview(bgview: secondvc.view)     let thirdvc = uiviewcontroller()     thirdvc.view.tag = 102     thirdvc.view.backgroundcolor = uicolor.purple     addscrollview(bgview: thirdvc.view)      viewcontrollers = [firstvc,secondvc,thirdvc]  }  func addscrollview(bgview: uiview) {     let scrollview = uiscrollview()     scrollview.frame = cgrect.init(x: 10, y: 10, width: bgview.frame.width-20, height: bgview.frame.height-20)     scrollview.backgroundcolor = uicolor.init(red: 0.34, green: 0.45, blue: 0.35, alpha: 0.9)     bgview.addsubview(scrollview)     scrollview.contentsize = cgsize.init(width: scrollview.frame.size.width, height: scrollview.frame.size.height+200) }   func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, viewcontrollerbefore viewcontroller: uiviewcontroller) -> uiviewcontroller? {     if viewcontroller.view.tag == 101 {         return viewcontrollers?[0]     }     else if viewcontroller.view.tag == 102{         return viewcontrollers?[1]     }     else{         return viewcontrollers?[2]     } }  public func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, viewcontrollerafter viewcontroller: uiviewcontroller) -> uiviewcontroller? {     if viewcontroller.view.tag == 101 {         return viewcontrollers?[0]     }     else if viewcontroller.view.tag == 102{         return viewcontrollers?[1]     }     else{         return viewcontrollers?[2]     } }  func presentationcount(for pageviewcontroller: uipageviewcontroller) -> int {     return (viewcontrollers?.count)! }  func presentationindex(for pageviewcontroller: uipageviewcontroller) -> int {     return 0 } 

    }


Comments