Skip to content

Commit 6c1cc20

Browse files
author
pera
authored
Merge pull request xmartlabs#367 from xmartlabs/fix/issue-357
Fixes xmartlabs#357
2 parents b77a9a7 + 1bda17f commit 6c1cc20

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

Sources/ButtonBarPagerTabStripViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ open class ButtonBarPagerTabStripViewController: PagerTabStripViewController, Pa
266266
return cells
267267
}
268268

269-
// MARK: - UICollectionViewDelegateFlowLayut
269+
// MARK: - UICollectionViewDelegateFlowLayout
270270

271271
open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
272272
guard let cellWidthValue = cachedCellWidths?[indexPath.row] else {

Sources/PagerTabStripViewController.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
6262

6363
open private(set) var viewControllers = [UIViewController]()
6464
open private(set) var currentIndex = 0
65+
open private(set) var preCurrentIndex = 0 // used *only* to store the index to which move when the pager becomes visible
6566

6667
open var pageWidth: CGFloat {
6768
return containerView.bounds.width
@@ -123,6 +124,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
123124
super.viewDidAppear(animated)
124125
lastSize = containerView.bounds.size
125126
updateIfNeeded()
127+
let needToUpdateCurrentChild = preCurrentIndex != currentIndex
128+
if needToUpdateCurrentChild {
129+
moveToViewController(at: preCurrentIndex)
130+
}
126131
isViewAppearing = false
127132
childViewControllers.forEach { $0.endAppearanceTransition() }
128133
}
@@ -148,9 +153,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
148153

149154
open func moveToViewController(at index: Int, animated: Bool = true) {
150155
guard isViewLoaded && view.window != nil && currentIndex != index else {
151-
currentIndex = index
156+
preCurrentIndex = index
152157
return
153158
}
159+
154160
if animated && pagerBehaviour.skipIntermediateViewControllers && abs(currentIndex - index) > 1 {
155161
var tmpViewControllers = viewControllers
156162
let currentChildVC = viewControllers[currentIndex]
@@ -268,6 +274,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
268274
let virtualPage = virtualPageFor(contentOffset: containerView.contentOffset.x)
269275
let newCurrentIndex = pageFor(virtualPage: virtualPage)
270276
currentIndex = newCurrentIndex
277+
preCurrentIndex = currentIndex
271278
let changeCurrentIndex = newCurrentIndex != oldCurrentIndex
272279

273280
if let progressiveDeledate = self as? PagerTabStripIsProgressiveDelegate, pagerBehaviour.isProgressiveIndicator {
@@ -296,6 +303,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
296303
if currentIndex >= viewControllers.count {
297304
currentIndex = viewControllers.count - 1
298305
}
306+
preCurrentIndex = currentIndex
299307
containerView.contentOffset = CGPoint(x: pageOffsetForChild(at: currentIndex), y: 0)
300308
updateContent()
301309
}
@@ -333,6 +341,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
333341
guard let me = self else { return }
334342
me.isViewRotating = false
335343
me.currentIndex = me.pageBeforeRotate
344+
me.preCurrentIndex = me.currentIndex
336345
me.updateIfNeeded()
337346
}
338347
}

0 commit comments

Comments
 (0)