A colossal Dreamer: GR鐵塔-天生我材

UIViewController - presentedViewController vs presentingViewController 본문

낙농일기

UIViewController - presentedViewController vs presentingViewController

江多林 2018. 4. 2. 19:42

오랜만에 사과농장에서 준 SDK 수준의 코드를 작성하다가..


보임조절기(UIViewController)에 달린 속성 두 개를 거꾸로 이해해서,

보임조절기 내부가 엉키게 만들고 말았다. (ㅠㅠ)


다음부터 정확히 사용하도록 하자.


보임조절기 속성

- presentedViewController: 내가 보여주는 아들

- presentingViewController: 나를 보여주는 아빠 또는 엄마



짜투리: 보임조절기 자손 찾기 코드

1. 아들 있으면, 아들을 찾아가고, 다시!

2. 아들 없으면, 탭인지 확인해서 선택된 아들을 찾아가고, 다시!

3. 아들 없고, 탭도 아니면, 네비인지 확인해서 네비의 막내아들 찾고, 다시!

4. 아들 없고, 탭도 아니고, 네비도 아니면, 지금 놈이 최종 자손 보임조절기!


func lookUpTopPresentedViewController(root topPresentedViewControllerOrNil: UIViewController?) -> UIViewController? {


    if let presentedViewController = topPresentedViewControllerOrNil?.presentedViewController {

        return lookUpTopPresentedViewController(root: presentedViewController)

    }

    if let tabbarController = topPresentedViewControllerOrNil as? UITabBarController {

        return lookUpTopPresentedViewController(root: tabbarController.selectedViewController)

    if let navigationController = topPresentedViewControllerOrNil as? UINavigationController {

        return lookUpTopPresentedViewController(root: navigationController.topViewController)

    }

    return topPresentedViewControllerOrNil

}