2012-03-29 4 views
5
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];  
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 120)]; 
    [view addSubview:headViewController.vew]; 
    [self.view addSubview:view]; 
} 

HeadViewController.h 표시되지 않습니다.UIView의 addSubview와 서브 뷰는

그리고 나는 headViewController.view을 볼 수 없습니다.

답변

15

우선 HeadViewController 클래스에 view 콘센트를 정의 할 필요가 없습니다. UIViewController 수퍼 클래스에서 자동으로 상속됩니다.

그런 다음 HeadViewController보기를 현재보기에 직접 추가하는 것이 좋습니다. 예 : 당신은 ARC (자동 참조 카운팅)를 사용하는 경우

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];  
    headViewController.view.frame = CGRectMake(0, 0, 320, 120); 
    [self.view addSubview:headViewController.view]; 
} 

그러나이의 headViewController 인스턴스는 아마도 viewDidLoad 방법이 끝난 후 해제됩니다. 현재 표시하고있는 컨트롤러의 로컬 변수에 해당 인스턴스를 할당하는 것이 편리합니다 (강제적이라고 말하고 싶습니다). 이 방법을 사용하면 나중에 필요할 때 뷰 구성 요소를 처리 할 수 ​​있으며 인스턴스는 유지되며 나머지는 완벽하게 작동합니다. .m 클래스 구현 파일의 시작 부분에 숨겨진 인터페이스 정의에

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    self.headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];  
    headViewController.view.frame = CGRectMake(0, 0, 320, 120); 
    [self.view addSubview:headViewController.view]; 
} 

@interface MyController() 
    @property (nonatomic, strong) HeadViewController *headViewController; 
@end 

: 당신은 뭔가를해야한다.

그것은 오타 같다
+0

나는 당신을 정정한다 : headviewController.view는 서브 뷰로 추가되지 않으면 nil이다. addsubview를 바꾸고 프레임을 설정해야합니다. – NeverBe

+0

ARC에 대한 업데이트를 확인하십시오. 'headViewController.view'가'nil' 인 경우, nib 파일의 컨트롤러와 뷰의 연결을 다시 확인하십시오. 이 방법 (배출구 문제) 또는 완료 후 (ARC 문제) '안돼'입니까? – marzapower

+0

기본 코드를 삭제 했으므로 코드를 변경했습니다. 본인이 말한 것처럼보기를 정의합니다. 그리고 아직 headViewController.view가 없습니다 ... 혼란 스러워요. – jxdwinter

0

이 - .view의 I 잊고

[보기 addSubview : headViewController.vew];

+1

정확할 수도 있지만 op는 이미 오래 전이 문제를 해결했습니다 ... – greedybuddha

0

나 구문에 누락

[보기 addSubview : headViewController.view];

+0

답변은 2 년 전에 제공되었습니다. 지금 목적은 무엇입니까? – YoungHobbit

+0

방금 ​​이걸 보았습니다. – Bharath

관련 문제