From 423f2acd63875f672e7268c27d7fb9d2e842925d Mon Sep 17 00:00:00 2001 From: Evan DeLaney Date: Thu, 19 Dec 2019 11:25:11 -0500 Subject: [PATCH] Improve API contract --- Sources/PagerTabStripViewController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/PagerTabStripViewController.swift b/Sources/PagerTabStripViewController.swift index 9aedb7d6..329b6972 100644 --- a/Sources/PagerTabStripViewController.swift +++ b/Sources/PagerTabStripViewController.swift @@ -42,9 +42,11 @@ public protocol PagerTabStripIsProgressiveDelegate: PagerTabStripDelegate { func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) } +public typealias ViewControllerIndicatorInfoProvider = UIViewController & IndicatorInfoProvider + public protocol PagerTabStripDataSource: class { - func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] + func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [ViewControllerIndicatorInfoProvider] } // MARK: PagerTabStripViewController @@ -177,7 +179,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate { // MARK: - PagerTabStripDataSource - open func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { + open func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [ViewControllerIndicatorInfoProvider] { assertionFailure("Sub-class must implement the PagerTabStripDataSource viewControllers(for:) method") return [] } @@ -381,8 +383,6 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate { guard !viewControllers.isEmpty else { fatalError("viewControllers(for:) should provide at least one child view controller") } - viewControllers.forEach { if !($0 is IndicatorInfoProvider) { fatalError("Every view controller provided by PagerTabStripDataSource's viewControllers(for:) method must conform to IndicatorInfoProvider") }} - } private var pagerTabStripChildViewControllersForScrolling: [UIViewController]?