Skip to content

Commit 6bfab5e

Browse files
authored
Merge pull request kitasuke#304 from kitasuke/fix_bug_of_menu_move_with_infinite_mode
Unexpected behavior for menu move with infinite mode
2 parents 287f995 + 0722650 commit 6bfab5e

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

Pod/Classes/PagingMenuController.swift

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,10 @@ open class PagingMenuController: UIViewController {
104104
self.options = options
105105

106106
switch options.componentType {
107-
case .all(let menuOptions, _): self.menuOptions = menuOptions
108-
case .menuView(let menuOptions): self.menuOptions = menuOptions
107+
case .all(let menuOptions, _):
108+
self.menuOptions = menuOptions
109+
case .menuView(let menuOptions):
110+
self.menuOptions = menuOptions
109111
default: break
110112
}
111113

@@ -259,7 +261,7 @@ open class PagingMenuController: UIViewController {
259261
pagingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
260262
])
261263

262-
switch (options.componentType) {
264+
switch options.componentType {
263265
case .pagingController:
264266
// V:|[pagingView]|
265267
NSLayoutConstraint.activate([
@@ -295,7 +297,8 @@ open class PagingMenuController: UIViewController {
295297
switch (options.lazyLoadingPage, menuOptions.displayMode, page) {
296298
case (.three, .infinite, menuView?.previousPage ?? previousPage),
297299
(.three, .infinite, menuView?.nextPage ?? nextPage): break
298-
case (.three, .infinite, _): pagingViewController?.visibleControllers.forEach { $0.view.alpha = 0 }
300+
case (.three, .infinite, _):
301+
pagingViewController?.visibleControllers.forEach { $0.view.alpha = 0 }
299302
default: break
300303
}
301304
}
@@ -332,13 +335,13 @@ extension PagingMenuController: UIScrollViewDelegate {
332335

333336
extension PagingMenuController: Pagable {
334337
public var currentPage: Int {
335-
switch options.componentType {
336-
case .menuView:
337-
guard let menuView = menuView else { return 0 }
338+
switch (menuView, pagingViewController) {
339+
case (let menuView?, _):
338340
return menuView.currentPage
339-
default:
340-
guard let pagingViewController = pagingViewController else { return 0 }
341+
case (_, let pagingViewController?):
341342
return pagingViewController.currentPage
343+
default:
344+
return 0
342345
}
343346
}
344347
var previousPage: Int {
@@ -397,11 +400,16 @@ extension PagingMenuController {
397400
page = Int(scrollView.contentOffset.x) / Int(scrollView.frame.width)
398401
default:
399402
switch (currentPagingViewPosition, options.componentType) {
400-
case (.left, .pagingController): page = previousPage
401-
case (.left, _): page = menuView?.previousPage ?? previousPage
402-
case (.right, .pagingController): page = nextPage
403-
case (.right, _): page = menuView?.nextPage ?? nextPage
404-
default: page = pagingViewController?.currentPage ?? currentPage
403+
case (.left, .pagingController):
404+
page = previousPage
405+
case (.left, _):
406+
page = menuView?.previousPage ?? previousPage
407+
case (.right, .pagingController):
408+
page = nextPage
409+
case (.right, _):
410+
page = menuView?.nextPage ?? nextPage
411+
default:
412+
page = currentPage
405413
}
406414
}
407415

@@ -546,10 +554,12 @@ extension PagingMenuController {
546554
fileprivate func validateDefaultPage(_ options: PagingMenuControllerCustomizable) {
547555
let maxCount: Int
548556
switch options.componentType {
549-
case .pagingController(let pagingControllers): maxCount = pagingControllers.count
557+
case .pagingController(let pagingControllers):
558+
maxCount = pagingControllers.count
550559
case .all(_, let pagingControllers):
551560
maxCount = pagingControllers.count
552-
case .menuView(let menuOptions): maxCount = menuOptions.itemsOptions.count
561+
case .menuView(let menuOptions):
562+
maxCount = menuOptions.itemsOptions.count
553563
}
554564

555565
guard options.defaultPage >= maxCount || options.defaultPage < 0 else { return }

0 commit comments

Comments
 (0)