@@ -62,6 +62,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
62
62
63
63
open private( set) var viewControllers = [ UIViewController] ( )
64
64
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
65
66
66
67
open var pageWidth : CGFloat {
67
68
return containerView. bounds. width
@@ -123,6 +124,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
123
124
super. viewDidAppear ( animated)
124
125
lastSize = containerView. bounds. size
125
126
updateIfNeeded ( )
127
+ let needToUpdateCurrentChild = preCurrentIndex != currentIndex
128
+ if needToUpdateCurrentChild {
129
+ moveToViewController ( at: preCurrentIndex)
130
+ }
126
131
isViewAppearing = false
127
132
childViewControllers. forEach { $0. endAppearanceTransition ( ) }
128
133
}
@@ -148,9 +153,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
148
153
149
154
open func moveToViewController( at index: Int , animated: Bool = true ) {
150
155
guard isViewLoaded && view. window != nil && currentIndex != index else {
151
- currentIndex = index
156
+ preCurrentIndex = index
152
157
return
153
158
}
159
+
154
160
if animated && pagerBehaviour. skipIntermediateViewControllers && abs ( currentIndex - index) > 1 {
155
161
var tmpViewControllers = viewControllers
156
162
let currentChildVC = viewControllers [ currentIndex]
@@ -268,6 +274,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
268
274
let virtualPage = virtualPageFor ( contentOffset: containerView. contentOffset. x)
269
275
let newCurrentIndex = pageFor ( virtualPage: virtualPage)
270
276
currentIndex = newCurrentIndex
277
+ preCurrentIndex = currentIndex
271
278
let changeCurrentIndex = newCurrentIndex != oldCurrentIndex
272
279
273
280
if let progressiveDeledate = self as? PagerTabStripIsProgressiveDelegate , pagerBehaviour. isProgressiveIndicator {
@@ -296,6 +303,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
296
303
if currentIndex >= viewControllers. count {
297
304
currentIndex = viewControllers. count - 1
298
305
}
306
+ preCurrentIndex = currentIndex
299
307
containerView. contentOffset = CGPoint ( x: pageOffsetForChild ( at: currentIndex) , y: 0 )
300
308
updateContent ( )
301
309
}
@@ -333,6 +341,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
333
341
guard let me = self else { return }
334
342
me. isViewRotating = false
335
343
me. currentIndex = me. pageBeforeRotate
344
+ me. preCurrentIndex = me. currentIndex
336
345
me. updateIfNeeded ( )
337
346
}
338
347
}
0 commit comments