0

대부분의 경우 화면에 표시되는 하나의 기본보기로 응용 프로그램을 빌드하고자합니다. 뷰의 일부는 상수이며 기본 컨트롤을 표시합니다. 그러나 앱의 상태에 따라 특별한 하위보기가 있습니다. 앱의 상태에는 특별한 '상태 개체'가 표시됩니다. 한 번에 하나의 '상태 객체'만 활성화 될 수 있지만 매우 다른 논리를 가질 수 있으며 (이 특수 하위보기 내에서) 다른 사용자 인터페이스로 제공되어야합니다.ViewController 아키텍처

분명히 현재 상태 개체의 유형을 분석하여 기본보기의 ViewController에서 처리 할 수 ​​있습니다. 상태 객체가 가질 수있는 모든 가능한 클래스에 특정한 코드를 가진 biiiig 스위치를 만들 수 있고, 새로운 상태 객체 서브 클래스를 추가 할 때마다 거기에 몇 개의 코드를 추가 할 수 있습니다 ... 그러나 이것은 훌륭한 아키텍처처럼 들리지는 않습니다. 나에게. 상태 객체 또는 다른 특정 ViewController가이 특별한 뷰를 대신 제어하기를 원합니다. 불행히도, 나는보기에서 조금 잃어버린 느낌, viewControllers & 대표자 & 정확히 이것을 달성 할 수 있습니다 이해가 안 돼요.

답변

1

슬레이트 뷰에서 많은 로직을 처리해야하는 경우이를보기 컨트롤러로 만든 다음 Session 102 - Implementing UIViewController Containment과 같이 컨테이너 접근 방식을 사용해야하는 경우 기본보기 컨트롤러에 추가 할 수 있습니다. 기본적으로 다음과 같이 :

[self addChildViewController:childViewController]; 
[childViewController didMoveToParentViewController:self]; 
[self.view addSubView:childViewController.view]; 

당신은 전환 애니메이션이 방법을 사용할 수 있습니다 transitionFromViewController: toViewController: duration: options: animations: completion:

0

이보기 컨트롤러와 UI (XIB)이 다른 두 가지라는 것을 기억하는 것이 중요하다. 컨트롤러를 구현하여 다양한 하위 뷰의 논리를 처리 한 다음 컨트롤러의 해당 인스턴스를 NibName과 함께 init을 사용하는 컨텍스트 기반의 다른 UI에 바인딩 할 수 있습니다 ...

이렇게하면 제어 논리를 한 번 작성하고 필요에 따라 다양하고 다양한 UI 경험을 제공하십시오. XIB는 모두 중앙 집중식 IBOutlets 세트에 다시 묶여 야하며 모든 설정이 완료됩니다. 앱의 전반적인 맥락에서 여전히 하위 뷰가 존재한다는 점에서 유사성이 큰 영역이있을 가능성이 있습니다. 잠재적으로 많은 XIB에 대한 하나의보기 컨트롤러의 이러한 전략은 해당 선을 따라 개발을 단순화하는 데 도움이됩니다.

행운을 비네.

0

각기 다른 하위 뷰 유형은 자체 뷰가있는 별도의보기 컨트롤러입니다.

+0

아이디어는 "switch logic"또는 subview 특정 로직이 viewcontroller에 있고 앱 위임자 또는 수퍼 뷰 컨트롤러가 아니라는 것입니다. 이렇게하면 언급하고있는 번거 로움을 피할 수 있습니다. –