Merge pull request #367 from xmartlabs/fix/issue-357

Fixes #357
This commit is contained in:
pera 2017-05-08 16:22:31 -03:00 committed by GitHub
commit 6c1cc20c9f
2 changed files with 11 additions and 2 deletions

View File

@ -266,7 +266,7 @@ open class ButtonBarPagerTabStripViewController: PagerTabStripViewController, Pa
return cells
}
// MARK: - UICollectionViewDelegateFlowLayut
// MARK: - UICollectionViewDelegateFlowLayout
open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
guard let cellWidthValue = cachedCellWidths?[indexPath.row] else {

View File

@ -62,6 +62,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
open private(set) var viewControllers = [UIViewController]()
open private(set) var currentIndex = 0
open private(set) var preCurrentIndex = 0 // used *only* to store the index to which move when the pager becomes visible
open var pageWidth: CGFloat {
return containerView.bounds.width
@ -123,6 +124,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
super.viewDidAppear(animated)
lastSize = containerView.bounds.size
updateIfNeeded()
let needToUpdateCurrentChild = preCurrentIndex != currentIndex
if needToUpdateCurrentChild {
moveToViewController(at: preCurrentIndex)
}
isViewAppearing = false
childViewControllers.forEach { $0.endAppearanceTransition() }
}
@ -148,9 +153,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
open func moveToViewController(at index: Int, animated: Bool = true) {
guard isViewLoaded && view.window != nil && currentIndex != index else {
currentIndex = index
preCurrentIndex = index
return
}
if animated && pagerBehaviour.skipIntermediateViewControllers && abs(currentIndex - index) > 1 {
var tmpViewControllers = viewControllers
let currentChildVC = viewControllers[currentIndex]
@ -268,6 +274,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
let virtualPage = virtualPageFor(contentOffset: containerView.contentOffset.x)
let newCurrentIndex = pageFor(virtualPage: virtualPage)
currentIndex = newCurrentIndex
preCurrentIndex = currentIndex
let changeCurrentIndex = newCurrentIndex != oldCurrentIndex
if let progressiveDeledate = self as? PagerTabStripIsProgressiveDelegate, pagerBehaviour.isProgressiveIndicator {
@ -296,6 +303,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
if currentIndex >= viewControllers.count {
currentIndex = viewControllers.count - 1
}
preCurrentIndex = currentIndex
containerView.contentOffset = CGPoint(x: pageOffsetForChild(at: currentIndex), y: 0)
updateContent()
}
@ -333,6 +341,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
guard let me = self else { return }
me.isViewRotating = false
me.currentIndex = me.pageBeforeRotate
me.preCurrentIndex = me.currentIndex
me.updateIfNeeded()
}
}