2010-08-08 5 views
2

이 두 요소가 어떻게 연결되어 있는지 이해하려고합니다. UIViewController를 만들 때마다 자동으로 자체 UIView가 제공됩니까?UIViewController와 UIView 사이의 관계

또한 코코아 또는 Objective-C의 이들입니까?

+1

아니요 : 해당 수업은 Cocoa Touch에서 제공 한 것입니다. Cocoa에는 UIKit이 없으므로 이러한 클래스가 없습니다. –

답변

4

UIViewController는 UIView를 관리하기 위해 만들어진 Cocoa Touch 클래스입니다. 뷰 계층 구조가 필요하지만보기를 "자동으로"얻지는 않습니다 (약간 정확하지 않습니다; 아래 편집 : 참조). 일반적으로 뷰 컨트롤러에서 initWithNibName을 호출하여 뷰를 가져옵니다.

File Builder가 UIViewController (또는 하위 클래스)이면 view라는 속성이 있다는 것을 알고있는 Interface Builder에 내장 된 마법이 있습니다. 그게 다야.

일단보기 컨트롤러와보기를 연결하면보기 컨트롤러는보기 작업에 대한 응답자로 등록하고, 기기 회전 알림을 등록하며 (자동으로 처리합니다. 소원)은 애니메이션의 일부 세부 사항을 처리하고 메모리 부족 상태를 반자동으로 처리하는 데 도움이됩니다.

수정 : 수정 - initWithNibName을 호출하지 않거나 수동으로보기 속성을 설정하면 view 속성이 view가 nil이면 loadView가 호출됩니다. loadView의 기본 구현은 nibBundle과 nibName을 설정하고 거기에서 뷰를로드하려고 시도 할 것입니다 (따라서 은 대부분 initWithNibName을 호출하기 위해을 가지지 않습니다.)하지만 이러한 특성이 ' t를 설정하면 UIView 객체가 기본값으로 인스턴스화됩니다. 따라서 기술적으로는 그렇습니다. 자동으로 자체 UIView가 제공되지만 대부분의 경우에는 그다지 중요하지 않습니다.

+0

뷰를 관리해야한다고 말하면 UIView, 올바른지, 관리하는 뷰의 종류가 다른가요? –

+0

예, UIView 및 UIView 하위 클래스. 뿐만 아니라 그보기를 적절히 채우는 데 필요한 다른 데이터는 무엇이든 - 예를 들어, UIViewController의 NSFetchedResultsController를 사용하여 UITableView를 채울 수 있습니다. –

+0

아니요, UIViewController는 Cocoa Touch 클래스입니다. Cocoa에는 UIKit이 없으므로 UIViewController가 없습니다. –

4

UIViewController에는 자동으로보기가 제공되지 않습니다. -loadView 방법으로 확인해야합니다. 기본적으로 이는 지정한 nib 파일에서 뷰를로드합니다. 펜촉을 사용하지 않으려는 경우이 메서드를 재정 의하여 사용자 지정보기를 만들 수도 있습니다.

또한보기 UIViewController 만들 때 바로 만들어지지 않습니다. UIViewController는 lazy-loading이라는 기술을 사용하여 처음 뷰에 실제로 액세스 할 때까지 뷰 생성을 지연합니다.

관련 문제