문제

iPhone 응용 프로그램에 UinavigationController를 추가하는 데 이상한 문제가 있습니다. 다음과 같이 컨트롤러를 추가합니다.

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

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

UIView *finalView = myeNavigationViewController.view;

[self.view addSubview:finalView];

상태 표시 줄과 UinavationController 제목 표시 줄 사이의 내 견해 상단에 이상한 공백을 얻는 것을 제외하고는 모두 계획대로 작동하는 것 같습니다.Alt Text http://www.andrewskinner.name/problem.png

온라인으로 검색했지만 실제로 검색해야 할 사항을 모릅니다. 다른 사람 이이 문제가 있습니까? 도움의 방향으로 나를 지적 할 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

이 질문의 답변을 확인하십시오.

Uiview가 왜 10px까지 멍청한 지 잘 모르겠습니다.

다른 팁

라인은 무엇을합니까

UIView *finalView = myeNavigationViewController.view;

코드에 추가 하시겠습니까? UIView에 먼저 할당하지 않고 직접 뷰를 추가 할 수 있으므로 중복됩니다. 또한 NavigationController가 아닌 MyNavigationController를 참조 할 때 잘못되었습니다.
나는 이것을하는 경향이있다

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]];

프레임을 경계로 설정하면 요청한 상단의 공백이 제거됩니다.

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

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

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

[myUIWindow addSubview:nav.view];

그리고 mysubclass_navigationcontroller 내부에서, 당신은 당신이 지금하고있는 모든 사용자 정의를 (컨트롤러가 무엇이든) 수행 할 수 있습니다.

나는 OP와 매우 유사한 코드를 사용하여 한동안이 문제로 어려움을 겪었고 내비게이션 컨트롤러 위에 흰색 막대가있었습니다.

UITABController의 뷰로 UinaVigationController를 추가 할 때 내 문제가 발생했습니다. 내 경우의 공간은 상태 표시 줄을 고려하여 UinavigationController의 UinavigationBar 부분에 의해 발생했으며 실제로 UinaVigationController에서 보여 주려고했던 견해의 일부를 겹치고있었습니다.

이것은 UitabbarController View Controllers 중 하나에서 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.

IB에는 "푸시의 바닥 막대"라고 불리는 모호한 속성이 있습니다. 그냥 확인하십시오. 그것은 나에게 문제를 해결했다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top