2012-06-04 3 views
1

label.text를 변경하는 ViewController의 함수를 테스트하고 싶습니다.코드로 ViewController에서 뷰를로드하는 방법은 무엇입니까?

ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil]; 
[controller pressed]; 
NSLog(@"%@",controller.label.text); 

가압 함수 아래와 같다 :

-(void)pressed{ 
self.label.text = @"hello"; 
} 

그러나, 그 결과는 NULL이다 은 제 I이 시도. 다음으로 나중에 나는 코드를 변경 :

AppDelegate *delegate = [[UIApplicationsharedApplication] delegate]; 
ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil]; 
delegate.window.rootViewController = controller; 
[controller pressed]; 
NSLog(@"%@",controller.label.text); 

내가 레이블의 텍스트가 나는 이유를 알고하지 않습니다 changed.But 할 수 있도록이 코드

delegate.window.rootViewController = controller; 

컨트롤러의 뷰를로드 할 수 있다고 생각합니다.

답변

2

정확합니다.

뷰는 필요할 때까지로드되지 않습니다. 단순히 뷰 컨트롤러를 생성해도 뷰 로딩이 트리거되지 않지만 윈도우의 루트 뷰 컨트롤러를 지정하면 디스플레이 용으로 설정해야하므로 모든 nib 객체를 인스턴스화하고 링크합니다.

ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil]; 
NSLog(@"%@", controller.view); 
+0

가 대단히 감사합니다 :

뷰에 대한 언급은 심지어 뭔가처럼, 그것은로드 발생하는 것입니다! 나는 검사를했고 당신이 옳았다는 것을 알았습니다. – lixing123

관련 문제