2

내 navigationController에 iboutlet을 만들고 currentview에 추가하려고하면 아무 것도 표시되지 않습니다. 그게 정말 이상한 때, 내 navigationController 코드에서 초기화하고 그것을 완벽하게 작동하는보기에 추가 할 때.iphone navigationController 내가 액세스하지 않는 한 표시되지 않습니다.

mainWindows.xib에서 하나를 만들고 내 applicationDidFinishLaunching 메서드의보기에 추가 할 때도 작동합니다.

하지만 다른 viewController에서로드하려고하면 실패하고 빈 화면이 남습니다.

프로그래밍 방식으로 추가하거나 mainWindow.xib에 추가 할 때 작동합니다.

나는 그것을 작동 시키려고 몇 시간 동안 노력해 왔습니다. 그것은 아주 간단 해 보이지만 다른 xib 파일에서 작동하도록 할 수는 없습니다.

내 설정 :

#import "RootViewController.h" 

RootViewController *rootViewController=[[RootViewController alloc] init]; 
[window addSubview:rootViewController.navController.view]; 

내 RootViewController가있는 navigationController에 함께 IBOutlet있다.

누구나 아이디어가 있습니까? 나는이 간단한 일이 왜 작동하지 않는지 완전히 이해하지 못한다. 나는 무엇을 놓치고, 그것은 나를 미치게한다. 내가 그렇지 않으면 왜 작동하지 않습니다 rootViewController.view을 액세서 필요 : 내가 그것을 변경하는 경우

****의 UPDATE **** 위의 코드는 작동?

#import "RootViewController.h" 

RootViewController *rootViewController=[[RootViewController alloc] init]; 
if(rootViewController.view){ 
NSLog(@"nil"); 
} 
[window addSubview:rootViewController.navController.view]; 

미리 감사드립니다.

답변

1

실제로는 view에 액세스하면 getter가 실제로 호출되기 때문에 컨트롤러의보기가 느리게 생성됩니다 (요청시). rootControllerview은 처음에 view 게터 메소드를 호출 할 때까지 존재하지 않습니다. 첫 번째 앱보기를 만드는 일반적인 방법은

[window addSubview:someController.view] 

이며보기를 만드는 데 도움이됩니다.

0

항상 나에게 일어난 문제는 Interface Builder에서 무언가를 연결하는 것을 잊었다는 것이 었습니다. 컨트롤러가 앱 위임 장소의 rootViewController 콘센트에 연결되어 있는지 확인하십시오. 또한 창이 연결되어 있는지 확인하십시오.

무언가가 연결되지 않으면 콘센트에 nil이 생기므로 self.rootViewController.navController.view는 nil 인 [[nil navController] 뷰]가되고 결국 nil을 하위 뷰로 추가하려고 시도합니다 나는 생각한다. 윈도우가 nil이라면 비슷하게 nil로 끝나지 만, 연결되지 않은 것은 rootViewController 일 것입니다.

+0

답변 해 주셔서 감사합니다! 나는 모든것을 검사했는데 그럴 것 같았다. rootViewController.view에 접근하여 해결했지만 왜 필요한지는 모른다. – Bjorn

0

컨트롤러가 IB로만 연결되어있을 때 iPad에서 제대로로드되지만 iPhone에서 빈 화면이 나타나고 디버거에 컨트롤러의보기에 프레임이 있음이 표시되는 경우에도 비슷한 문제가 실제로 발생합니다. which is 0, 0, 0, 0 ApplicationDidFinishLaunching의 코드에서 rootviewcontroller 콘센트를 재설정하여 문제를 해결했지만 이것이 작동하지 않는 이유를 모르겠습니다.

관련 문제