티스토리 뷰

하나의 뷰 컨트롤러에서 다른 뷰컨트롤러를 modal로 띄웠을때 sheet로 띄우는 설정이었다면

그 전 뷰 컨트롤러가 presentingViewController가 되는데

tab bar controller를 이용하게 되면 presentingViewController가 UITabBarController가 된다.

그래서 현재 뷰를 dismiss할때 ViewController의 viewDidLoad를 해야하는데 못하는 상황 발생..

 

해결 방법은

TabBarController의 children을 사용하면 된다..!!

스택오버플로우 찾아보면서 똑같은 질문이 있어서 답변을 봤는데 거기엔

definesPresentationContext를 true로 하고 modalPresentationStyle를 current context로 바꾸라는데

모두 시도해봤지만 안됐다

그래서 진짜 막연한 상상으로..tab bar controller에 속한 아이템(뷰컨트롤러)들이 있으니까 어쩌면

접근할 수 있을지도 몰라..하고 .을 눌러봤는데 children이 있었다..형식이 뷰 컨트롤러의 리스트길래

메인 뷰는 첫번째 뷰일테니까..presentingViewController?.children[0].viewDidLoad()하니까 된다..

 

children찍어보니 이렇게 나온다. 현재 탭바에 연결돼있는 두개의 뷰..

 

그렇게 해결-

사실 full screen 사용하면 보다 간단한 문제일텐데 지금 UI엔 이게 적절했다.

무튼 해결!

댓글
댓글쓰기 폼