2011-05-16 3 views
0

하나의 MainWindow.xib 파일이있는 앱이 있습니다. 그런 다음 ViewControllerA.xib 및 ViewControllerB.xib 있습니다. 내 MainWindow.xib에는 두 개의 ViewControllerA.xib를 가리키는 ViewController가 하나 있습니다.iPhone/iPad 용 UIViewController 질문

On ViewControllerA 나는 단추가 있으며이 단추를 누르면 화면에 ViewControllerB가 이동됩니다. 어떻게해야합니까?

는이 코드를했지만, 나는 뭔가를 놓치고 생각 :

- (IBAction)btMyButton:(id)sender 
{ 
    ViewControllerB * viewController = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil]; 
    [[UIApplication sharedApplication].keyWindow addSubview:viewController.view]; 
    [self.navigationController pushViewController:viewController animated:YES]; 
} 

내 ViewControllerB가 나타나지 않지만, 그것은 이전보기를 통해, 화면 상단에 숙청된다. 어떤 도움이라도 대단히 감사합니다.

+1

내비게이션 컨트롤러 프로젝트를 사용하지 않는 경우 self.navigationController는 아마도 창에 추가되지 않고 아마도 nil 일 것입니다. –

+0

네, 맞습니다. NavigationController가 없습니다. 해야합니까? NavigationController를 배치하면 맨 위에 막대가 표시됩니다. 첫 번째 화면에서는 막대를 맨 위에 표시하고 싶지 않지만 사용자가 단추를 클릭하면 탐색 컨트롤러보기로 이동합니다. – LilMoke

+0

원하지 않는다면 막대를 가질 필요가 없습니다.보기 컨트롤러를 밀기를 원할 경우 [self presentModalViewController : animated :]를 사용할 수 있습니다. 그러면 dissmissModelViewController를 호출합니다. animated : 현재 호출 한 뷰 ...이 작업은 self.parentViewController를 통해 수행 할 수 있습니다. –

답변

0

컨트롤러 B의보기가 올바른 높이인지 확인하여 탐색 모음 높이 44 px와 상태 표시 줄 20 px도 빼야합니다. 그 값은 iPhone 용입니다.

- (IBAction)btMyButton:(id)sender 
    { 
     //you should load from the main app bundle 
     ViewControllerB * viewController = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:[NSBundle mainBundle]]; 
     // you don't need the following line  
     //[[UIApplication sharedApplication].keyWindow addSubview:viewController.view]; 
     [self.navigationController pushViewController:viewController animated:YES]; 
     [viewController release]; 
    } 

업데이트 당신이에 컨트롤러 B를 밀어 탐색 컨트롤러가없는 수 있습니다 경우 위의 주석이 말한대로. 그래서 메인 창 대신 뷰 컨트롤러에 네비게이션 컨트롤러를 추가하고 해당 루트 뷰 컨트롤러하면 컨트롤러 A. 나는 이것이 당신이 도움이되기를 바랍니다

, 당신은 메인 창에서 이전의 ViewController를 제거해야합니다

1

두 번째 줄을 제거 감사합니다

[[UIApplication sharedApplication].keyWindow addSubview:viewController.view]; 

당신은 두 번보기를 추가하고 있습니다. 두 번째 줄과 세 번째 줄은 둘 다 다른 위치의보기 계층에보기를 추가합니다.

--update-- 두 번째 줄을 지우고보기가 보이지 않으면 self.navigationController가 거의 없음입니다. 대신 [self presentModalViewController :]를 시도해보십시오.

+0

예, 제거하고 아무 일도 일어나지 않고 ViewControllerB가 전혀 표시되지 않습니다. 또한, 내 ViewControllerA 클래스에이 단추가 있습니다. 그래서 나는 자기에게 질문하고 있었다? – LilMoke

0

을합니다.

관련 문제