2012-02-24 3 views
0

ViewController가 'method (viewDidLoad 또는 viewWillAppear라고 가정 해 봅시다) 내에 다른 ViewController를 만들면 정확합니까?UIView 및 UIViewController desing 패턴

제 경우에는 여러 개의 다른 뷰 (B와 C)가 포함 된 뷰 A가 있습니다. B와 C는 매우 복잡하기 때문에 특별한 뷰 컨트롤러 인 vcB와 vcC가 이들을 위해 설계되었으며 이러한 뷰 컨트롤러는 vcA 내부에서 생성됩니다 보기 컨트롤러 A.

괜찮습니까? 예를 들어 vcA가 vcB의 위임자로 자신을 설정하면 어떻게됩니까? 즉 vcB는 vcA를 유지합니다. 이 경우 모든 객체를 올바르게 릴리스하려면 vcB의 delegate를 nil로 설정해야하지만이 작업을 수행하는 좋은 순간은 무엇입니까? viewWillDisappear:, viewDidDisappear: 또는 smth. 그밖에?

문제가 발생하는 유일한 경우가 아니므로보기 컨트롤러간에 이러한 종류의 상호 작용을 올바르게 디자인하는 방법에 대한 의견을 구하고 있습니다.

답변

1

나는 생각에 교리 준수를 목격 한 한 번에 하나의보기 컨트롤러 만 작동해야합니다. 나 자신에 관해서는, 전체 디자인을 단순화하고 (복잡성을 줄임) 디자인 관리를 더 쉽게하는 경우, 동시에 두 개 이상의 View Controller를 사용하는쪽으로 기울여야합니다. recent response that I posted에서 읽을 수 있듯이, Apple은 여러보기 컨트롤러를 동시에 조작 할 수있는 사용자 정의 컨텐츠보기 컨트롤러를 지원함으로써 동일한 방향으로 나아갔습니다.

블로그에서 Jonah Williams가 읽고있는 가치가 있습니다. 그러나 솔직히, 나는 그의 충고와 모순되는 어떤 문제도 없었다. (해당 게시물은 약 1 년입니다.)

보기 컨트롤러의 핵심 롤은 관리하는보기의 대리인 메서드를 보유하는 것입니다. 뷰는 실제로 객체가 해당 대리인으로 작동하는 것을 신경 쓰지 않습니다. 따라서 단일 VC 관점과 더욱 조화를 이룬 디자인을 원한다면 위임 메소드를 서브 클래 싱 된 NSObject에 넣고 뷰 컨트롤러라고 부르면 안됩니다. UIViewController가 이미 가지고있는 메서드 중 일부를 만들 필요가 있습니다. 그러나 뷰 컨트롤러라고 부를 필요는 없습니다. 나, UIViewCcontroller를 하위 클래스로 만들었습니다.

0

일반적으로 다른 컨트롤러의 하위보기에는 별도의보기 컨트롤러가 필요하지 않습니다. 뷰 컨트롤러가 작동하도록 설계된 방식이 아닙니다.

애플의 탐색 및 탭 바 컨트롤러는이 작업을 수행하지만 그들은 무시 무시하게 복잡하고 표준이 아닌 것 (당신이 그들을 하위 클래스 허용하지 않는 이유를 추측이다.)

관련 문제