From 67886338a839224f20a808b0129669a0a9e91b67 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 24 Jan 2023 22:19:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20mostTopViewController(of:)=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(#323)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 가장 위의 뷰컨트롤러를 반환하는 메서드 추가 --- NADA-iOS-forRelease.xcodeproj/project.pbxproj | 4 +++ .../Extensions/UIApplication+Extension.swift | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 NADA-iOS-forRelease/Resouces/Extensions/UIApplication+Extension.swift diff --git a/NADA-iOS-forRelease.xcodeproj/project.pbxproj b/NADA-iOS-forRelease.xcodeproj/project.pbxproj index 0079a523..f7bb2bb6 100644 --- a/NADA-iOS-forRelease.xcodeproj/project.pbxproj +++ b/NADA-iOS-forRelease.xcodeproj/project.pbxproj @@ -104,6 +104,7 @@ F82FF8262702000000E57F8B /* RequiredFlavorCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F82FF8242702000000E57F8B /* RequiredFlavorCollectionViewCell.xib */; }; F83206AA26F61E3700D61711 /* FrontCardCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F83206A826F61E3700D61711 /* FrontCardCell.swift */; }; F83206AB26F61E3700D61711 /* FrontCardCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F83206A926F61E3700D61711 /* FrontCardCell.xib */; }; + F835EF6F29800F51001ABAAF /* UIApplication+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F835EF6E29800F51001ABAAF /* UIApplication+Extension.swift */; }; F84BAF9D26FDB417004CA335 /* CardCreationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F84BAF9C26FDB417004CA335 /* CardCreationViewController.swift */; }; F84BAFAD26FDB543004CA335 /* FrontCardCreationCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F84BAFAB26FDB543004CA335 /* FrontCardCreationCollectionViewCell.swift */; }; F84BAFAE26FDB543004CA335 /* FrontCardCreationCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F84BAFAC26FDB543004CA335 /* FrontCardCreationCollectionViewCell.xib */; }; @@ -250,6 +251,7 @@ F82FF8242702000000E57F8B /* RequiredFlavorCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RequiredFlavorCollectionViewCell.xib; sourceTree = ""; }; F83206A826F61E3700D61711 /* FrontCardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrontCardCell.swift; sourceTree = ""; }; F83206A926F61E3700D61711 /* FrontCardCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FrontCardCell.xib; sourceTree = ""; }; + F835EF6E29800F51001ABAAF /* UIApplication+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIApplication+Extension.swift"; sourceTree = ""; }; F84BAF9C26FDB417004CA335 /* CardCreationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardCreationViewController.swift; sourceTree = ""; }; F84BAFAB26FDB543004CA335 /* FrontCardCreationCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrontCardCreationCollectionViewCell.swift; sourceTree = ""; }; F84BAFAC26FDB543004CA335 /* FrontCardCreationCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FrontCardCreationCollectionViewCell.xib; sourceTree = ""; }; @@ -944,6 +946,7 @@ F8719DDA274F92E90081AD51 /* UITextField+Extension.swift */, F8D74DD7276C7FB60071E5FC /* UIImageView+Extension.swift */, 7734D5B72777A8E8004360E4 /* String+Extension.swift */, + F835EF6E29800F51001ABAAF /* UIApplication+Extension.swift */, ); path = Extensions; sourceTree = ""; @@ -1126,6 +1129,7 @@ F8C83FCB272FA32C0009DF0D /* GroupService.swift in Sources */, F858079E2700354E00872484 /* BackgroundCollectionViewCell.swift in Sources */, F8C83FBD272F9F430009DF0D /* GenericResponse.swift in Sources */, + F835EF6F29800F51001ABAAF /* UIApplication+Extension.swift in Sources */, 398413B7274A7A1E005550BC /* AddGroupBottomSheetViewController.swift in Sources */, 77DFB871274F92F9000CD36F /* AddWithIdBottomSheetViewController.swift in Sources */, 7713E8482752E2A900724C8B /* SelectGroupBottomSheetViewController.swift in Sources */, diff --git a/NADA-iOS-forRelease/Resouces/Extensions/UIApplication+Extension.swift b/NADA-iOS-forRelease/Resouces/Extensions/UIApplication+Extension.swift new file mode 100644 index 00000000..c9500d47 --- /dev/null +++ b/NADA-iOS-forRelease/Resouces/Extensions/UIApplication+Extension.swift @@ -0,0 +1,34 @@ +// +// UIApplication+Extension.swift +// NADA-iOS-forRelease +// +// Created by kimhyungyu on 2023/01/24. +// + +import UIKit + +extension UIApplication { + public class func mostTopViewController(of base: UIViewController? = nil) -> UIViewController? { + var baseVC: UIViewController? + + if base != nil { + baseVC = base + } else { + baseVC = (UIApplication.shared.connectedScenes + .compactMap { $0 as? UIWindowScene } + .flatMap { $0.windows } + .first { $0.isKeyWindow })?.rootViewController + } + + if let naviController = baseVC as? UINavigationController { + return mostTopViewController(of: naviController.visibleViewController) + } else if let tabbarController = baseVC as? UITabBarController, + let selected = tabbarController.selectedViewController { + return mostTopViewController(of: selected) + } else if let presented = baseVC?.presentedViewController { + return mostTopViewController(of: presented) + } + + return baseVC + } +}