336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
최상단 뷰컨트롤러 가져오기
설명
뷰가 많이 중첩 되다보면 잘못된 구조로 인해 뷰 전환등을 사용을 못하게 되는 경우가 있습니다. 그렇게 안 만드는 것이 제일 중요하지만 디자인등 여러가지를 고려하다보면 피치 못하게 만들어지는 경우가 많습니다. 그럴때 사용 하면 유용한 extension 입니다.
사용환경
* Swift 4.2 * XCode 10.0
코드
extension UIApplication { class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? { 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 } //사용 방법 if let topVC = UIApplication.topViewController() { topVC.present(UIViewController(), animated: true, completion: nil) }
맞치며
정말 뷰 계층에 공부가 필요한 이유중 하나입니다. 뷰계층 구조를 무시하고 만들다보면 진짜 어마어마한 결과물이 나옵니다,, 물론 개발자가 잘못 만드는 경우도 있지만 디자인 때문에 어쩔 수 없게 나오는 경우도 많습니다. 디자이너, 기획자와 잘 얘기(?)를 해서 원만하게 해결하는 것도 좋은 방법중 하나입니다. 틀린점이나 궁금한점은 댓글 남겨 주시면 답변 해드리겠습니다. 감사합니다 :)
'iOS 프로그래밍 > iOS' 카테고리의 다른 글
iOS)문자열의 처음, 마지막 지정된 개수만큼 지우기 (0) | 2018.12.20 |
---|---|
iOS)네비게이션바 뒤로가기 제스쳐 (0) | 2018.12.19 |
iOS)UIScrollView 상단, 하단 이동시키기 (0) | 2018.12.17 |
iOS) UIView 상속받은 뷰의 특정 방향만 둥글게 하기 (0) | 2018.10.22 |
iOS) 클립보드로 텍스트 복사 (0) | 2018.10.19 |