From b85058240dfe806d7897edb422d92d36c9bd99d4 Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:24:51 +0200 Subject: [PATCH 1/7] Update BottomSheetNavigationController.swift --- .../BottomSheetNavigationController.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift b/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift index bb7d297..ea31c5e 100644 --- a/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift +++ b/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift @@ -26,6 +26,10 @@ public final class BottomSheetNavigationController: UINavigationController { super.init(rootViewController: rootViewController) } + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + } + @available(*, unavailable) required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") From 1a826a9121fe25c457a959a1ef7429dc036f85f9 Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:31:22 +0200 Subject: [PATCH 2/7] Update BottomSheetNavigationController.swift --- .../NavigationController/BottomSheetNavigationController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift b/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift index ea31c5e..9675f64 100644 --- a/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift +++ b/Sources/BottomSheet/Core/NavigationController/BottomSheetNavigationController.swift @@ -27,6 +27,7 @@ public final class BottomSheetNavigationController: UINavigationController { } override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + self.configuration = .default super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) } From 2328271ed9bf21d90952557f6598b639def7bfcb Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:31:03 +0200 Subject: [PATCH 3/7] Update UIViewController+Convenience.swift Add dissmisCompletion to presentBottomSheet --- .../UIViewController+Convenience.swift | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift index 990a51f..cddeea9 100644 --- a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift +++ b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift @@ -95,6 +95,26 @@ public extension UIViewController { present(viewController, animated: true, completion: nil) } + func presentBottomSheet(viewController: UIViewController, configuration: BottomSheetConfiguration, dissmisCompletion: (() -> Void)) { + weak var presentingViewController = self + weak var currentBottomSheetTransitionDelegate: UIViewControllerTransitioningDelegate? + let presentationControllerFactory = DefaultBottomSheetPresentationControllerFactory(configuration: configuration) { + DefaultBottomSheetModalDismissalHandler(presentingViewController: presentingViewController) { + if currentBottomSheetTransitionDelegate === presentingViewController?.bottomSheetTransitionDelegate { + presentingViewController?.bottomSheetTransitionDelegate = nil + } + dissmisCompletion() + } + } + bottomSheetTransitionDelegate = BottomSheetTransitioningDelegate( + presentationControllerFactory: presentationControllerFactory + ) + currentBottomSheetTransitionDelegate = bottomSheetTransitionDelegate + viewController.transitioningDelegate = bottomSheetTransitionDelegate + viewController.modalPresentationStyle = .custom + present(viewController, animated: true, completion: nil) + } + func presentBottomSheetInsideNavigationController(viewController: UIViewController, configuration: BottomSheetConfiguration) { let navigationController = BottomSheetNavigationController(rootViewController: viewController, configuration: configuration) presentBottomSheet(viewController: navigationController, configuration: configuration) From 95267ca21064ba399ff367889227820b72279432 Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:34:06 +0200 Subject: [PATCH 4/7] Update UIViewController+Convenience.swift --- .../Core/Extensions/UIViewController+Convenience.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift index cddeea9..74c715a 100644 --- a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift +++ b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift @@ -95,7 +95,7 @@ public extension UIViewController { present(viewController, animated: true, completion: nil) } - func presentBottomSheet(viewController: UIViewController, configuration: BottomSheetConfiguration, dissmisCompletion: (() -> Void)) { + func presentBottomSheet(viewController: UIViewController, configuration: BottomSheetConfiguration, @escaping dissmisCompletion: (() -> Void)) { weak var presentingViewController = self weak var currentBottomSheetTransitionDelegate: UIViewControllerTransitioningDelegate? let presentationControllerFactory = DefaultBottomSheetPresentationControllerFactory(configuration: configuration) { From b45d13afcd7c033fe5d0875fec902cb9c78e3532 Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:38:15 +0200 Subject: [PATCH 5/7] Update UIViewController+Convenience.swift --- .../Core/Extensions/UIViewController+Convenience.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift index 74c715a..deb2dc5 100644 --- a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift +++ b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift @@ -95,7 +95,7 @@ public extension UIViewController { present(viewController, animated: true, completion: nil) } - func presentBottomSheet(viewController: UIViewController, configuration: BottomSheetConfiguration, @escaping dissmisCompletion: (() -> Void)) { + func presentBottomSheet(viewController: UIViewController, configuration: BottomSheetConfiguration, dissmisCompletion: @escaping (() -> Void)) { weak var presentingViewController = self weak var currentBottomSheetTransitionDelegate: UIViewControllerTransitioningDelegate? let presentationControllerFactory = DefaultBottomSheetPresentationControllerFactory(configuration: configuration) { From b3a7850ce3d608ee9b4f441c8993ae8e8c401503 Mon Sep 17 00:00:00 2001 From: Tomasz Wagner <61847268+luka-w@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:45:09 +0200 Subject: [PATCH 6/7] Update UIViewController+Convenience.swift --- .../Core/Extensions/UIViewController+Convenience.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift index deb2dc5..fc5b472 100644 --- a/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift +++ b/Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift @@ -119,4 +119,9 @@ public extension UIViewController { let navigationController = BottomSheetNavigationController(rootViewController: viewController, configuration: configuration) presentBottomSheet(viewController: navigationController, configuration: configuration) } + + func presentBottomSheetInsideNavigationController(viewController: UIViewController, configuration: BottomSheetConfiguration, dismissCompletion: @escaping (() -> Void)) { + let navigationController = BottomSheetNavigationController(rootViewController: viewController, configuration: configuration) + presentBottomSheet(viewController: navigationController, configuration: configuration, dissmisCompletion: dismissCompletion) + } } From b3c5b49999c1a304ade154d89e9c3ce14bd4559e Mon Sep 17 00:00:00 2001 From: "tomasz.wagner" Date: Mon, 10 Jul 2023 12:53:15 +0200 Subject: [PATCH 7/7] update demo project with dismissCompletion callback --- .../User Interface/Screens/Root/RootViewController.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/BottomSheetDemo/Sources/User Interface/Screens/Root/RootViewController.swift b/BottomSheetDemo/Sources/User Interface/Screens/Root/RootViewController.swift index 67317f2..10d68e2 100644 --- a/BottomSheetDemo/Sources/User Interface/Screens/Root/RootViewController.swift +++ b/BottomSheetDemo/Sources/User Interface/Screens/Root/RootViewController.swift @@ -54,7 +54,10 @@ final class RootViewController: UIViewController { let viewController = ResizeViewController(initialHeight: 300) presentBottomSheetInsideNavigationController( viewController: viewController, - configuration: .default + configuration: .default, + dismissCompletion: { + print("TWA: dismissCompletion") + } ) } }