2009-06-24 3 views
13

내 iPhone 응용 프로그램에 UINavigationController를 추가하는 데 이상한 문제가 있습니다.iPhone : UINavigationController 상단의 이상한 공간

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil]; 

myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 

UIView *finalView = myeNavigationViewController.view; 

[self.view addSubview:finalView]; 

모든 나는 상태 표시 줄과 UINavigationController가 제목 표시 줄 사이에 내보기의 상단에 이상한 공백을 얻을 제외하고 계획대로 작동하는 것 같다 다음과 같이 내가 컨트롤러를 추가 할 수 있습니다. alt text http://www.andrewskinner.name/problem.png

나는 온라인으로 검색했지만 무엇을 검색해야할지 모릅니다. 다른 사람이이 문제를 겪었습니까? 도와 주실 수 있습니까?

미리 감사드립니다.

답변

0

어쩌면 당신은 어떻게 든 두 개의 UIView, 상태 표시 줄이있는 각각 을 얻었을 것입니다. xib를 확인하십시오.

11

라인

UIView *finalView = myeNavigationViewController.view; 

코드에 어떻게 추가합니까?
내가 경계에 프레임 설정이

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];  
myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 
[navigationController.view setFrame: [self.view bounds]]; 
navigationController.delegate = self; 
[self.view addSubview:[navigationController view]]; 

을하는 경향이 .. 플러스는 myNavigationController 아니라있는 navigationController을 참조로 잘못된 - 당신이 처음으로 UIView에 할당하지 않고 직접보기를 추가 할 수 있습니다 그것은 중복입니다 당신이 물어 보는 맨 위의 공백을 제거합니다. 이 질문에 답변 밖으로

2

문제는 UINavigationController가 이상적으로 UIWindow의 직접적인 하위 뷰를해야한다는 것입니다. 그것은 스스로 위치와 크기를 조정합니다. UINavigationController를 UIWindow 하위 뷰의 다른 사용자 지정 뷰에 추가하면 UIWindow에 상태 표시 줄이 표시되는지 여부를 고려하여이 사용자 지정 뷰의 위치와 크기를 처리해야합니다.

mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ]; 

[myUIWindow addSubview:nav.view]; 

과 mySubClass_NavigationController 내부

, 당신은 당신이 (해당 컨트롤러가 무엇이든) 자기 지금하고있는 모든 사용자 정의를 수행 할 수 있습니다

나의 제안은 UINavigationController의 서브 클래스로 사용자 정의보기를 만드는 것입니다 .

2

나는 op와 매우 비슷한 코드를 사용하여 잠시 동안 고민했고 또한 내 탐색 컨트롤러 위에 흰색 막대가있었습니다.

UITabController에서보기로 UINavigationController를 추가 할 때 제 문제가 발생했습니다. 제 경우의 공간은 상태 표시 줄을 고려한 UINavigationController의 UINavigationBar 부분으로 인해 발생했으며 UINavigationController에 표시하려고했던 뷰의 일부분과 실제로 중첩되어있었습니다.

이것은 UITabBarController보기 컨트롤러 중 하나에서 loadView로 끝난 코드입니다.

SomeUITableViewController *screenList = [[SomeUITableViewController alloc] init]; 

UINavigationController *navController = [[UINavigationController alloc] 
             initWithRootViewController:screenList]; 

CGRect frame = [[navController navigationBar] frame]; 

frame.origin.y = 0; // Was 20, set to 0 to not take into account the status bar. 

[[navController navigationBar] setFrame:frame]; 

[self setView:[navController view]]; 

http://discussions.apple.com/message.jspa?messageID=7890362에 대한 추가 정보가 있습니다.

1

"숨바꼭지 바를 밀어 넣기 (Push on Hides Bottom Bar on Push)"라는 IB에 모호한 속성이 있습니다. 그냥 확인해. 그것은 나를 위해 문제를 해결했습니다.

관련 문제