2013-08-02 4 views
3

iOS 5.0이 childViewController 개념을 도입 한 이래로 모든 작업을 수행 할 수있는 것 같습니다. xib 파일에서로드하는 데 사용되는 UIView를 사용하는 데 익숙합니다.xib에서 UIView를로드하지 않아야하나요?

시나리오의 위치는 일반적으로 UIView를 사용하고 xib 파일의 모든 내용을 포함해야합니다. UIView가로드하는 데 사용되는 구현할 필요가있는 Delegate와 DataSources가있는 경우. 이 같은

사용하여 뭔가 : 이것은 올바른 것 같았다 결코

NSArray* nibsArray = [[NSBundle mainBundle] loadNibNamed:@"ABCustomLoginView" owner:self options:nil]; 
     if(nibsArray && [nibsArray count] > 0)  { 
      self = [[nibsArray objectAtIndex:0] retain]; 
     } 

, 그것은 MVC를 파괴하는 데 사용됩니다. UIView에서 다른 UIView의 이벤트를 처리하는 이유는 무엇입니까?

이제 childViewController가 있습니다. 고유 한 기능을 가지고 있으며 나중에 별도의 UIViewController로 다시 사용할 수있는 적절한 크기의 UI 조각을 항상 만들어야합니까?

이전 방법이 여전히 우세한 상황이 있습니까?

답변

0

사용자 정의 컨테이너보기 컨트롤러를 작성할 때 하위보기 컨트롤러 만 사용해야하거나 레이아웃이 매우 복잡합니다.

내 의견으로는 : 저는 항상 스토리 보드를 사용합니다. 스토리 보드를 런타임에 어셈블 할 필요없이 디자인 타임에 전체 화면을 모두 표현할 수 있기 때문에 항상 스토리 보드를 사용합니다.

각 개별보기 컨트롤러에 스토리 보드를 사용하도록 선택한 경우 (일부 대형 팀이 병합 문제를 피하기 위해이 작업을 수행함) 모든보기 및보기 컨트롤러를 배치하고 함께 연결할 수 있습니다.

런타임에 특정 뷰의 동적 번호를 만들려는 경우 뷰를 코딩하거나 매우 복잡한 경우 NSNib를 ivar에 저장하고 각 뷰를 인스턴스화합니다.

결론 : 하위보기 컨트롤러는 절대로이를 사용하는 방법에 대한 코드 샘플을 바꾸거나 포함하지 않습니다.

+0

여러 화면에서 재사용 할 수있는 재사용 가능한 화면이있는 시나리오에 대해 이야기하고 있습니다. iPad 응용 프로그램에서 흔히 볼 수 있습니다. 여러 위치에서 사용하고 UI 코딩을 피하기 위해 필자는 펜촉을 사용하고 해당 펜촉을 customView의 하위보기로로드했습니다. 대부분의 경우 해당보기에 tableView가있는 경우 customView는 tableView 대리자를 처리합니다. 이와 같은 시나리오에서 childViewControllers는 완벽한 선택이 아닐까요? 안드로이드의 단편 개념과 비슷합니다. –

+0

나는 본다. 네, 자식 뷰 컨트롤러에 유효한 애플리케이션입니다. 뷰가 다른 뷰 이벤트를 처리해서는 안된다는 원래의 질문에 맞습니다. 따라서이 경우 하위 뷰 컨트롤러는 뷰를 소유하고 해당 이벤트를 처리합니다. (여전히 스토리 보드에서 하위보기 컨트롤러를로드합니다). 만약 당신이 작은 팀이라면, 나는 하나의 스토리 보드에 모든 내용을 담고 있으며, 모든 하위보기 컨테이너 객체를 여러 장소에서 사용되는 하위보기 컨트롤러 인 "장면"으로 지정할 것입니다. – atomkirk

+0

좋아요. 스토리 보드가 좋다. 스토리 보드 나 xib에 대해 논쟁하지 않습니다. 내 주장은 UIViews와 childViewControllers 중 하나를 선택했다. 스토리 보드는 아직 프로젝트에서 사용하고 있지만, 여러 사람이 스토리 보드를 엉망으로 만들려고 할 때 발생할 수있는 git 충돌을 두려워합니다. 전체 프로젝트에 대한 하나의 파일입니다. 권리 ? 여러 스토리 보드로 나누더라도 스토리 보드 자체를 사용하는 목적은 상실됩니다. –

관련 문제