Skip to content
This repository was archived by the owner on Jun 17, 2018. It is now read-only.

Commit 745fb9b

Browse files
committed
Implement onMove closure
1 parent c84e892 commit 745fb9b

File tree

3 files changed

+34
-53
lines changed

3 files changed

+34
-53
lines changed

Example/PagingMenuControllerDemo/PagingMenuViewController.swift

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,22 @@ class PagingMenuViewController: UIViewController {
1717
// Do any additional setup after loading the view, typically from a nib.
1818

1919
let pagingMenuController = self.childViewControllers.first as! PagingMenuController
20-
pagingMenuController.delegate = self
2120
pagingMenuController.setup(options)
22-
}
23-
}
24-
25-
extension PagingMenuViewController: PagingMenuControllerDelegate {
26-
// MARK: - PagingMenuControllerDelegate
27-
func willMove(toMenu menuController: UIViewController, fromMenu previousMenuController: UIViewController) {
28-
print(#function)
29-
print(previousMenuController)
30-
print(menuController)
31-
}
32-
33-
func didMove(toMenu menuController: UIViewController, fromMenu previousMenuController: UIViewController) {
34-
print(#function)
35-
print(previousMenuController)
36-
print(menuController)
37-
}
38-
39-
func willMove(toMenuItem menuItemView: MenuItemView, fromMenuItem previousMenuItemView: MenuItemView) {
40-
print(#function)
41-
print(previousMenuItemView)
42-
print(menuItemView)
43-
}
44-
45-
func didMove(toMenuItem menuItemView: MenuItemView, fromMenuItem previousMenuItemView: MenuItemView) {
46-
print(#function)
47-
print(previousMenuItemView)
48-
print(menuItemView)
21+
pagingMenuController.onMove = { state in
22+
switch state {
23+
case let .willMoveController(menuController, previousMenuController):
24+
print(previousMenuController)
25+
print(menuController)
26+
case let .didMoveController(menuController, previousMenuController):
27+
print(previousMenuController)
28+
print(menuController)
29+
case let .willMoveItem(menuItemView, previousMenuItemView):
30+
print(previousMenuItemView)
31+
print(menuItemView)
32+
case let .didMoveItem(menuItemView, previousMenuItemView):
33+
print(previousMenuItemView)
34+
print(menuItemView)
35+
}
36+
}
4937
}
5038
}

Pod/Classes/MenuView.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import UIKit
1111
open class MenuView: UIScrollView {
1212
public fileprivate(set) var currentMenuItemView: MenuItemView!
1313

14-
weak internal var viewDelegate: PagingMenuControllerDelegate?
1514
internal fileprivate(set) var menuItemViews = [MenuItemView]()
15+
internal var onMove: ((MenuMoveState) -> Void)?
1616

1717
fileprivate var menuOptions: MenuViewCustomizable!
1818
fileprivate var sortedMenuItemViews = [MenuItemView]()
@@ -115,7 +115,7 @@ open class MenuView: UIScrollView {
115115

116116
if let previousMenuItemView = previousMenuItemView,
117117
page != previousPage {
118-
viewDelegate?.willMove(toMenuItem: menuItemView, fromMenuItem: previousMenuItemView)
118+
onMove?(.willMoveItem(to: menuItemView, from: previousMenuItemView))
119119
}
120120

121121
update(currentPage: page)
@@ -146,7 +146,7 @@ open class MenuView: UIScrollView {
146146

147147
if let previousMenuItemView = previousMenuItemView,
148148
page != previousPage {
149-
self!.viewDelegate?.didMove(toMenuItem: self!.currentMenuItemView, fromMenuItem: previousMenuItemView)
149+
self!.onMove?(.didMoveItem(to: self!.currentMenuItemView, from: previousMenuItemView))
150150
}
151151
}
152152
}

Pod/Classes/PagingMenuController.swift

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,23 @@
88

99
import 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

2518
internal let MinimumSupportedViewCount = 1
2619
internal let VisiblePagingViewNumber = 3
2720

2821
open 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

Comments
 (0)