2017-05-10 1 views
1

뭔가를 변경해야하는 경우 UIViewController 스택의 상위 수준보기로 이동하는 방법을 알고 싶습니다.뷰 계층 구조에서 요소를 찾는 가장 좋은 방법

예제 중 하나는 TabViewController가 있고 탭간에 통신해야하는 경우입니다. 그러나 이것은 유일한 경우는 아닙니다. 내가 지금 무엇

이 방법은 당신이 정말로 뷰의 계층 구조를 알 필요가 있다는 것입니다 함께 havely 당신이에 따라,이

let tabOne = self.tabBarController?.childViewControllers.first?.childViewControllers.first as? tabOneController 

또는

let topController = ((self.viewControllers[0] as! RootViewController).viewControllers![0] as! UINavigationController).topViewController as? MySpecialViewController 

문제 같은이며, 계층 구조를 조금 변경하면 변경해야합니다.

두 번째 문제는 팀에서 작업하는 경우이 코드가 매우 실망스럽고 다른 팀 구성원들에게 충분히 설명 할 수 없다는 것입니다.

제 질문은 올바른 접근 방식/모범 사례 또는 그 방법입니다.

답변

1

iOS에서 매우 일반적인 관용구는 탭 컨트롤러가 위임자 인터페이스를 제공하고 상위 컨트롤러가이를 구현에 전달하는 것입니다. 간단한 방법은 상단 컨트롤러가 실제로 그것을 구현하도록하는 것입니다.

해당 솔루션에서 tabOne은 탭 컨트롤러에 있다는 것을 알지 못합니다. 단지 위임 메서드를 호출하기 때문입니다. 탭 컨트롤러는 필요한 모든 작업을 수행합니다.

관련 문제