2014-06-11 1 views
0

나는 이제 iOS 개발에 익숙하다. 목표는 2011 년 초에 전 동료가 만든 정말 오래된 응용 프로그램을 수정하는 것입니다. 해결할 수없는 문제가 있습니다.네비게이션 컨트롤러 아래 숨겨진 프리뷰 컨트롤러

로그인 화면을 보여주는 ViewController를 제시하고자합니다. 그러나 ViewController가 표시되면 navigationController 및 statusbar 아래에 숨겨집니다.

Login *fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]]; 
    [fvController setTitle:@"Login"]; 
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:fvController]; 
    [fvController setKc:self]; 
    [self presentViewController:navCon animated:YES completion:nil]; 
    [fvController release]; 
    [navCon release]; 
    navCon = nil; 
    fvController = nil; 

누구든지 나를 도울 수 있습니다 : 여기

을 낙담 코드입니다되어 분리 된 뷰 컨트롤러에 뷰 컨트롤러를 제시

: 나는 또한이 오류가?

미리 감사드립니다.

답변

0

UIWindow에는 계층 구조의 첫 번째보기 컨트롤러를 가리키는 rootViewController 필드가 있습니다. 이 계층 구조 외부의 컨트롤러에서보기 컨트롤러를 제시하면 이상한 일이 발생합니다.

키 윈도우 ([yourUIApplication keyWindow])에이 필드가 설정되어 있는지 확인하십시오. 그것이 없으면 전체 계층 구조가 분리되고 다시 점검해야합니다. 창에 루트보기 컨트롤러가있는 경우 모든보기가 결국 루트에 연결되도록 계층 구조를 재구성하는 동안 여기에서보기를 표시 할 수 있습니다.

+0

안녕하세요. 의견을 보내 주셔서 감사합니다. 나는이 일을 정확히 어디서하는지 모른다. 내 AppDelegate 내 rootViewController 내 설정했습니다 : 'window.rootViewController = tabBarController; [window makeKeyAndVisible]; ' 계층 구조에 문제가있을 수 있습니다. 이 응용 프로그램은 Xib의 btw를 사용합니다. – djsmit

0
당신이 당신의 ViewController의 당신의 생성 된 인스턴스를 방출하기 때문에 무슨 일이 일어나고

, 다음과 같은 코드를 변경하려고 :

@implementation yourViewController 
{ 
    Login *fvController; 
    UINavigationController *navCon; 
} 

이제 당신의 ViewController의 상단 변화에 @implementation 아래 viewControllers 선언 이

fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]]; 
[fvController setTitle:@"Login"]; 
navCon = [[UINavigationController alloc] initWithRootViewController:fvController]; 
[fvController setKc:self]; 
[self presentViewController:navCon animated:YES completion:nil]; 

그리고 당신의 방출 개체를 추가 같은 코드는 방법을

를 할당 해제하기
- (void)dealloc 
{ 
    [fvController release]; 
    [navCon release]; 
    navCon = nil; 
    fvController = nil; 
} 
+0

의견을 보내 주셔서 감사합니다. 이것은 실제로 작동하지 않습니다. 나는 dealloc 메소드에서 선언되지 않은 식별자 _ 에러를 사용합니다. – djsmit

+0

viewController가 전역으로 선언되어 있지 않으므로 이러한 오류가 발생합니다. 내 대답을 편집 할게. – EridB

+0

다시 한 번 의견을 보내 주셔서 감사합니다. 이 오류는 이제 실제로 사라졌습니다. 하지만 _Local 선언은 '현재 인스턴스 variable_ 경고를 숨 깁니다. Btw, 나는 내 프로젝트 전반에 걸쳐 이러한 경고를 많이 받는다. – djsmit