uipageviewcontroller - UIPageController - Detect Current Page If swipe Cancelled (SWIFT 3.*) -
i have uipagecontroller correctly detects previous or next pageindex upon scroll
the problem have of need solution is...
example:- user scrolls left or right decides cancel during swipe... remains on current page.
the pageindex changes pending page(next page) , not actual current page..
my code achieve above statement :--
func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, willtransitionto pendingviewcontrollers: [uiviewcontroller]) { if let itemcontroller = pendingviewcontrollers[0] as? pagecontentviewcontroller { nextindex = itemcontroller.pageindex print("page index = \(nextindex)") } } func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, didfinishanimating finished: bool, previousviewcontrollers: [uiviewcontroller], transitioncompleted completed: bool) { currentindex = nextindex print("current page = \(currentindex)") } func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, viewcontrollerafter viewcontroller: uiviewcontroller) -> uiviewcontroller? { let itemcontroller = viewcontroller as! pagecontentviewcontroller if itemcontroller.pageindex < numberofpages { return getitemcontroller(itemcontroller.pageindex+1) } return nil } func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, viewcontrollerbefore viewcontroller: uiviewcontroller) -> uiviewcontroller? { let itemcontroller = viewcontroller as! pagecontentviewcontroller if itemcontroller.pageindex > 0 { return getitemcontroller(itemcontroller.pageindex-1) } return nil } func getitemcontroller(_ itemindex: int) -> pagecontentviewcontroller? { if itemindex < numberofpages { let pageitemcontroller = self.storyboard!.instantiateviewcontroller(withidentifier: "page1") as! pagecontentviewcontroller pageitemcontroller.pageindex = itemindex return pageitemcontroller } return nil }
i want page number before page displays can display particular objects etc.
viewcontrollerafter , viewcontrollerbefore doesn't seem called every single time cannot rely on delegate method
i not know how missed in didfinishanimating method completion block
thus following code fixed issue
func pageviewcontroller(_ pageviewcontroller: uipageviewcontroller, didfinishanimating finished: bool, previousviewcontrollers: [uiviewcontroller], transitioncompleted completed: bool) { if completed { currentindex = nextindex } print("current page = \(currentindex)") }
Comments
Post a Comment