iOS App 개발 중 UIView Controller의loadView 방법 사용 상세 설명
컨트롤러의loadView 방법과view 속성 컨트롤러에view 속성이 있는데, 우리는 항상 컨트롤러에서self를 통과한다.view에 액세스합니다.이view는 아주 재미있는 물건입니다.일단 이 뷰가 뭔지 알아야 돼.하나의 컨트롤러가 윈도우의 루트 컨트롤러가 될 때, 이 인터페이스가 표시될 때, 컨트롤러의view는 윈도우에 추가되어 인터페이스를 표시합니다.정상적인 상황에서 컨트롤러가 자체로 가지고 있는view는'무색 투명'이다.윈도우의 루트 컨트롤러를 설정하기 전에 버턴을 만들어서 윈도우에 직접 추가하면, 버턴은 윈도우에 나타나지만, 컨트롤러의view 아래에 있습니다.이때 버튼을 누르면 버튼이 클릭에 응답하지 않는 것을 발견할 수 있습니다.이것은 컨트롤러의view가 클릭 이벤트를 차단했기 때문에 이것은 완전히 투명하지 않다는 것을 설명한다. (완전히 투명하면 클릭 이벤트를 차단하지 않기 때문에view Controller.view.alpha = 0을 설정하여 검증할 수 있으며, 이때 단추는 클릭에 응답할 수 있다.)사실view는backgroundColor가clearcolor의 보기입니다.clearcolor는 거의 투명한 색이지만 완전히 투명하지 않습니다. 즉, 클릭 이벤트가 발생할 때clearcolor 배경의view는 클릭 이벤트를 차단합니다. 완전히 투명하지 않기 때문입니다.그래서 컨트롤러의view는 보이지 않고 만질 수 있는...또한view는 불러오기를 게을리합니다. 즉, 컨트롤러의view를 실제로 사용할 때만 만들어집니다.그것은 컨트롤러의 -loadView 방법에서 만들어진 것이다.
- (void)loadView
{
//
// , storyboard, storyboard view
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor clearColor];
// ...
_view = view;
}
앞에서 말했듯이view는 불러오기 게으르기 때문에self를 사용합니다.view:
- (UIView *)view
{
//
if (_view == nil) {
[self loadView];
[self viewDidLoad];
}
return _view;
}
당view가 nil일 때loadView 메서드를 호출합니다. 이 때 시스템은 기본적으로 UIView 대상을 만들고 값을 에 부여합니다.view, 이때view에 값이 생겼습니다.viewDidLoad 방법을 호출합니다.
self를 다시 방문하면view 때, 왜냐하면view는 이미 값이 있으니 바로 돌아갑니다view.이것도loadView와viewDidLoad 방법이 한 번만 실행되는 이유입니다.
앞서 언급한 바와 같이 window에 루트 컨트롤러를 설정하면 루트 컨트롤러의view가 바로 window에 추가되는 것이 아니다. 즉, 이때view가 만들어지지 않았다는 것이다.[self.window makeKey AndVisible] 이후 인터페이스가 표시될 때view가 필요합니다. 이때view의 Getter 방법을 호출하고loadView를 실행하며viewDidLoad를 실행하는 등 일련의 방법을 수행합니다.
현재 우리는view가 불러오기 게으르다는 것을 알고 있기 때문에 [self.window makeKey AndVisible] 이전에 컨트롤러의view를 사용하면 미리 만들 수 있습니다.
NSLog(@"%@", viewController.view); // view, view
이제 컨트롤러의view는loadView 방법을 통해 만들어진 것을 알았기 때문에 컨트롤러의 자체view를 바꾸는 목적을 달성할 수 있습니다.
- (void)loadView
{
JYView *view = [[JYView alloc] initWithFrame:[UIScreen mainScreen].bounds];
view.background = [UIColor blueColor];
_view = view;
}
이 때 우리는 컨트롤러가 자동으로 만든view를 바꾸었고, 지금은self를 사용합니다.view는 JYView의 객체를 가져옵니다.
loadView 사용 중의 일부 주의점은 이 함수를 주동적으로 호출하지 마십시오.view controller는view의property가 요청되고 현재view 값이nil일 때 이 함수를 호출합니다.만약view를 수동으로 만들면 이 함수를 다시 불러와야 합니다.IB로view를 만들고view controller를 초기화하면 initWith NibName:bundle: 방법을 사용합니다. 이 때loadView 함수를 다시 불러오지 마십시오.이 방법의 기본 구현은 다음과 같습니다. 사용 가능한 nib 파일에 대한 정보를 찾고 이 정보에 따라 nib 파일을 불러옵니다. nib 파일에 대한 정보가 없으면, 기본 구현은 공백의 UIView 대상을 만들고, 이 대상을 controller의 주view로 만듭니다.그래서 이 함수를 다시 불러올 때 너도 이렇게 해야 한다.하위 클래스의view를view 속성 (property) 에 부여합니다. (create의view는 유일한 실례이고 다른 controller에 공유되지 않아야 합니다.) 다시 불러온 이 함수는super를 호출해서는 안 됩니다.만약views를 더 초기화하려면viewDidLoad 함수에서 해야 합니다.iOS 3.0 및 더 높은 버전에서viewDidUnload 함수를 다시 불러와view에 대한 인용이나 내용 (하위view 등) 을 풀어야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.