88
99import UIKit
1010
11- public protocol PagingMenuControllerDelegate : class {
12- func willMove( toMenu menuController: UIViewController , fromMenu previousMenuController: UIViewController )
13- func didMove( toMenu menuController: UIViewController , fromMenu previousMenuController: UIViewController )
14- func willMove( toMenuItem menuItemView: MenuItemView , fromMenuItem previousMenuItemView: MenuItemView )
15- func didMove( toMenuItem menuItemView: MenuItemView , fromMenuItem previousMenuItemView: MenuItemView )
16- }
17-
18- public extension PagingMenuControllerDelegate {
19- func willMove( toMenu menuController: UIViewController , fromMenu previousMenuController: UIViewController ) { }
20- func didMove( toMenu menuController: UIViewController , fromMenu previousMenuController: UIViewController ) { }
21- func willMove( toMenuItem menuItemView: MenuItemView , fromMenuItem previousMenuItemView: MenuItemView ) { }
22- func didMove( toMenuItem menuItemView: MenuItemView , fromMenuItem previousMenuItemView: MenuItemView ) { }
11+ public enum MenuMoveState {
12+ case willMoveController( to: UIViewController , from: UIViewController )
13+ case didMoveController( to: UIViewController , from: UIViewController )
14+ case willMoveItem( to: MenuItemView , from: MenuItemView )
15+ case didMoveItem( to: MenuItemView , from: MenuItemView )
2316}
2417
2518internal let MinimumSupportedViewCount = 1
2619internal let VisiblePagingViewNumber = 3
2720
2821open class PagingMenuController : UIViewController {
29- weak public var delegate : PagingMenuControllerDelegate ? {
30- didSet {
31- guard let menuView = menuView else { return }
32-
33- menuView. viewDelegate = delegate
34- }
35- }
3622 public fileprivate( set) var menuView : MenuView ? {
3723 didSet {
3824 guard let menuView = menuView else { return }
3925
4026 menuView. delegate = self
41- menuView. viewDelegate = delegate
27+ menuView. onMove = onMove
4228 menuView. update ( currentPage: options. defaultPage)
4329 view. addSubview ( menuView)
4430 }
@@ -53,6 +39,13 @@ open class PagingMenuController: UIViewController {
5339 pagingViewController. didMove ( toParentViewController: self )
5440 }
5541 }
42+ public var onMove : ( ( MenuMoveState ) -> Void ) ? {
43+ didSet {
44+ guard let menuView = menuView else { return }
45+
46+ menuView. onMove = onMove
47+ }
48+ }
5649
5750 fileprivate var options : PagingMenuControllerCustomizable ! {
5851 didSet {
@@ -172,7 +165,7 @@ open class PagingMenuController: UIViewController {
172165
173166 let nextPage = page % pagingViewController. controllers. count
174167 let nextPagingViewController = pagingViewController. controllers [ nextPage]
175- delegate ? . willMove ( toMenu : nextPagingViewController, fromMenu : previousPagingViewController)
168+ onMove ? ( . willMoveController ( to : nextPagingViewController, from : previousPagingViewController) )
176169 menuView? . move ( toPage: page)
177170
178171 pagingViewController. update ( currentPage: nextPage)
@@ -188,7 +181,7 @@ open class PagingMenuController: UIViewController {
188181 // show paging views
189182 self ? . showPagingMenuControllers ( )
190183
191- self ? . delegate ? . didMove ( toMenu : nextPagingViewController, fromMenu : previousPagingViewController)
184+ self ? . onMove ? ( . didMoveController ( to : nextPagingViewController, from : previousPagingViewController) )
192185 }
193186 }
194187
0 commit comments