ios - UIPageViewController Implementation - Black Screen After Changing View Controllers -


trying implement app allows users scroll between uiviewcontrollers using uipageviewcontroller.

currently, after swiping second uiviewcontroller, screen goes black , cannot scroll anymore. ideas?

here subclassed uipageviewcontroller code:

class applicationviewcontroller: uipageviewcontroller, uipageviewcontrollerdatasource, uipageviewcontrollerdelegate {  var registrationcontroller : uiviewcontroller! var logincontroller : uiviewcontroller! var capturecontroller : uiviewcontroller! var visiblevcs = [uiviewcontroller]() var index = 0  override func viewdidload() {     super.viewdidload()     initcontrollers()     reset() }  override func didreceivememorywarning() {     super.didreceivememorywarning()     // dispose of resources can recreated. }  func initcontrollers() {     registrationcontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("registrationviewcontroller") uiviewcontroller     logincontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("loginviewcontroller") uiviewcontroller     capturecontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("captureviewcontroller") uiviewcontroller      visiblevcs = [registrationcontroller, logincontroller, capturecontroller] }  func reset() {     var currentcontroller = viewcontrolleratindex(index)     pageviewcontroller.datasource = self self.setviewcontrollers([currentcontroller!], direction: uipageviewcontrollernavigationdirection.forward, animated: true, completion: nil) }  func pageviewcontroller(pageviewcontroller: uipageviewcontroller, viewcontrollerafterviewcontroller viewcontroller: uiviewcontroller) -> uiviewcontroller? {     if(index >= visiblevcs.count - 1){         return nil     }     return self.viewcontrolleratindex(++index) }  func pageviewcontroller(pageviewcontroller: uipageviewcontroller, viewcontrollerbeforeviewcontroller viewcontroller: uiviewcontroller) -> uiviewcontroller? {      if(index <= 0){         return nil     }     return self.viewcontrolleratindex(--index)  }  func viewcontrolleratindex(index : int) -> uiviewcontroller? {     return visiblevcs[index]; } } 

saving index property in uipageviewcontroller din't work me well. solve had create base uiviewcontroller index property follow:

class pageitemcontroller: uiviewcontroller {  var index = -1      override func viewdidload() {         super.viewdidload()     }      override func didreceivememorywarning() {         super.didreceivememorywarning()     }  } 

then make pages subclasses of pageitemcontroller , set indexes corresponding position in array

func initcontrollers(){     registrationcontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("registrationviewcontroller") pageitemcontroller     registrationcontroller.index = 0     logincontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("loginviewcontroller") pageitemcontroller     logincontroller.index = 1     capturecontroller = self.storyboard?.instantiateviewcontrollerwithidentifier("captureviewcontroller") pageitemcontroller     capturecontroller.index = 2     // visiblevcs type must [pageitemcotroller]     visiblevcs = [registrationcontroller, logincontroller, capturecontroller] } 

and implement before , after methods based on currentcontroller index

func pageviewcontroller(pageviewcontroller: uipageviewcontroller, viewcontrollerbeforeviewcontroller viewcontroller: uiviewcontroller) -> uiviewcontroller? {      let itemcontroller = viewcontroller as! pageitemcontroller      if itemcontroller.index > 0 {          return visiblevcs[itemcontroller.index - 1]      }      return nil  }   func pageviewcontroller(pageviewcontroller: uipageviewcontroller, viewcontrollerafterviewcontroller viewcontroller: uiviewcontroller) -> uiviewcontroller? {      let itemcontroller = viewcontroller as! pageitemcontroller      if itemcontroller.index < visiblevcs.count - 1 {           return visiblevcs[itemcontroller.index + 1]     }      return nil } 

Comments

Popular posts from this blog

apache - PHP Soap issue while content length is larger -

asynchronous - Python asyncio task got bad yield -

javascript - Complete OpenIDConnect auth when requesting via Ajax -