Skip to content

Commit 6094462

Browse files
committed
Merge pull request #15 from hyperoslo/fix/page-indicator
Set current index when animation is finished
2 parents c1c13d1 + 86540ba commit 6094462

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

Source/PagesController.swift

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import UIKit
55
func pageViewController(pageViewController: UIPageViewController, setViewController viewController: UIViewController, atPage page: Int)
66
}
77

8-
@objc(HYPPagesController) public class PagesController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {
8+
@objc(HYPPagesController) public class PagesController: UIPageViewController {
99

1010
struct Dimensions {
1111
static let bottomLineHeight: CGFloat = 1.0
@@ -38,7 +38,7 @@ import UIKit
3838

3939
public var pagesDelegate: PagesControllerDelegate?
4040

41-
public private(set) var bottomLineView: UIView = {
41+
public private(set) lazy var bottomLineView: UIView = {
4242
let view = UIView()
4343
view.setTranslatesAutoresizingMaskIntoConstraints(false)
4444
view.backgroundColor = .whiteColor()
@@ -47,6 +47,8 @@ import UIKit
4747
return view
4848
}()
4949

50+
public private(set) var pageControl: UIPageControl?
51+
5052
public convenience init(_ pages: [UIViewController],
5153
transitionStyle: UIPageViewControllerTransitionStyle = .Scroll,
5254
navigationOrientation: UIPageViewControllerNavigationOrientation = .Horizontal,
@@ -69,6 +71,16 @@ import UIKit
6971
view.bringSubviewToFront(bottomLineView)
7072
goTo(startPage)
7173
}
74+
75+
public override func viewDidAppear(animated: Bool) {
76+
super.viewDidAppear(animated)
77+
78+
for subview in view.subviews {
79+
if subview is UIPageControl {
80+
pageControl = subview as? UIPageControl
81+
}
82+
}
83+
}
7284
}
7385

7486
// MARK: Public methods
@@ -110,7 +122,7 @@ extension PagesController {
110122

111123
// MARK: UIPageViewControllerDataSource
112124

113-
extension PagesController {
125+
extension PagesController : UIPageViewControllerDataSource {
114126

115127
public func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
116128
let index = prevIndex(viewControllerIndex(viewController))
@@ -129,29 +141,29 @@ extension PagesController {
129141
public func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
130142
return currentIndex
131143
}
132-
133144
}
134145

135146
// MARK: UIPageViewControllerDelegate
136147

137-
extension PagesController {
138-
139-
public func pageViewController(pageViewController: UIPageViewController, willTransitionToViewControllers pendingViewControllers: [AnyObject]) {
140-
141-
if let viewController = pendingViewControllers.first as? UIViewController,
142-
index = viewControllerIndex(viewController) {
143-
currentIndex = index
144-
145-
if setNavigationTitle {
146-
title = viewController.title
147-
}
148-
}
149-
}
148+
extension PagesController : UIPageViewControllerDelegate {
150149

151150
public func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool,
152151
previousViewControllers: [AnyObject], transitionCompleted completed: Bool) {
153152
if completed {
154-
pagesDelegate?.pageViewController(self, setViewController: pages[currentIndex], atPage: currentIndex)
153+
if let viewController = pageViewController.viewControllers.last as? UIViewController,
154+
index = viewControllerIndex(viewController) {
155+
currentIndex = index
156+
157+
if setNavigationTitle {
158+
title = viewController.title
159+
}
160+
161+
if let pageControl = pageControl {
162+
pageControl.currentPage = currentIndex
163+
}
164+
165+
pagesDelegate?.pageViewController(self, setViewController: pages[currentIndex], atPage: currentIndex)
166+
}
155167
}
156168
}
157169
}
@@ -216,7 +228,6 @@ extension Array {
216228
return nil
217229
}
218230
}
219-
220231
}
221232

222233
func nextIndex(x: Int?) -> Int? {

0 commit comments

Comments
 (0)