Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Realm
- JPA
- mac
- Code
- darkmode
- window
- error
- Python
- 한글
- 웹뷰
- Session
- 개발자
- SwiftUI
- FLUTTER
- IOS
- view
- iOS16
- Apple
- rxswift
- appstore
- Notification
- Git
- Archive
- github
- MacOS
- Xcode
- UIButton
- Firebase
- Swift
- stack
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
Swift ) 네비게이션 바, 탭바 위에 팝업 띄우기 - EEYatHo iOS 본문
iOS, Swift/Tip, Bug, Swift Error
Swift ) 네비게이션 바, 탭바 위에 팝업 띄우기 - EEYatHo iOS
EEYatHo 2021. 2. 19. 21:13반응형
[ 요약 ]
컨트롤러를 찾아서 그 뷰에 띄우지 말고,
Window 위에 띄워라.
[ 개요 ]
Popup 관리 모듈을 만들때의 일. (PopupManager)
팝업을 띄워주기위해 현재 화면에 보이는 뷰컨트롤러를 찾아야한다고 생각했다.
그래서 구글링해서 찾은 소스.
(visibleViewController, selectedViewController, presentedViewController를 활용해 DFS로 찾아준다.)
class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
// return base
if let nav = base as? UINavigationController {
return topViewController(base: nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(base: selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(base: presented)
}
return base
}
여기서 받은 VC에 Popup 이나 Toast를 띄우니까,
당연히, 네비게이션바나 탭바 영역에는 접근할 수 없었다.
골똘히 생각하다가,
Window라는 개념이 있었다는게 떠올랐다.
UIApplication.shared.keyWindow
당연하게도
여기에 띄워주면 네비게이션 바나 탭바 영역까지 잘 된다.
역시 아는게 힘..
'iOS, Swift > Tip, Bug, Swift Error' 카테고리의 다른 글
Swift ) Background Foreground 감지 (0) | 2021.03.02 |
---|---|
Swift ) 내 앱 설정화면으로 이동하기 - EEYatHo iOS (0) | 2021.02.26 |
Swift ) UIButton 클릭시, 회색 되는거 없애기 - EEYatHo iOS (0) | 2021.02.25 |
Swift ) iOS animate spring 효과넣기 - EEYatHo iOS (0) | 2021.02.19 |
Swift ) SnapKit Animation ( AutoLayout, Animate ) (0) | 2021.02.18 |
Comments