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,
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
Post a Comment