2013-04-05 1 views
-1

2 개의 navigationControllers를 viewcontroller에 추가하고 싶습니다. 이 2 개의 navigationController는 완전 독립적이며 연결되지 않습니다. 나는이 두 navigationViewController를 splitviewcontroller와 같이 다른 옆에 표시하고 싶습니다.두 navigationController를 viewController에 추가하는 방법은 무엇입니까?

childViewController를 사용하면 2 개의 viewController를 원하는 위치와 크기에 추가 할 수 있습니다. 하지만 navigationController로 시도하면 모든 화면을 가져 와서 점 (0,0)에 표시합니다. navigationController의 프레임을 변경하려고했지만 아무 것도 변경되지 않았습니다.

아무도 도와 줄 수 있습니까?

고마워요.

편집 : 여기 childVC를 추가하는 데 사용되는 코드는 다음과 같습니다

self.meetingsListViewController = [[MeetingsListViewController alloc] initWithNibName:@"MeetingsListViewController" bundle:nil]; 
self.navCalendar = [[UINavigationController alloc] initWithRootViewController:meetingsListViewController]; 
[self.navCalendar setNavigationBarHidden:NO]; 

self.meetingsListViewController.view.frame = CGRectMake(10, 54, self.view.frame.size.width/2-20, self.view.frame.size.height - 64); 
self.navCalendar.view.frame = self.meetingsListViewController.view.frame;  
self.navCalendar.view.autoresizesSubviews = NO; 

[self addChildViewController:meetingsListViewController]; 
[self.view addSubview:self.meetingsListViewController.view]; 
[self.navCalendar didMoveToParentViewController:self]; 


self.listPlaylistViewController = [[ListPlaylistViewController alloc] initWithNibName:@"ListPlaylistViewController" bundle:nil]; 
self.navPlaylist = [[UINavigationController alloc] initWithRootViewController:listPlaylistViewController]; 
[self.navPlaylist setNavigationBarHidden:NO]; 

self.listPlaylistViewController.view.frame = CGRectMake(self.view.frame.size.width/2+10, 54, self.view.frame.size.width/2-20, self.view.frame.size.height - 64); 
self.navPlaylist.view.frame = self.listPlaylistViewController.view.frame; 
self.navPlaylist.view.autoresizesSubviews = NO; 

[self addChildViewController:listPlaylistViewController]; 
[self.view addSubview:self.listPlaylistViewController.view]; 
[self.navPlaylist didMoveToParentViewController:self]; 
+0

대체로 'UINavigationController'의 프레임을 수정할 수 있어야합니다. 'navigationController.view.frame = ...'설정이 작동하지 않습니까? – Tobi

+0

아니요, 그렇지 않습니다. 네비게이션 컨트롤러는 모든 화면을 (0,0) 위치로 가져갑니다. –

+0

음, childvc를 추가하고 프레임을 설정하는 데 사용하는 전체 코드를 게시 할 수 있습니까? – Tobi

답변

-1

쉬운 방법은 당신이 임베디드 컨트롤러를 제공하는 스토리 보드에서 컨트롤러의보기에 두 개의 컨테이너 뷰를 추가하는 것입니다. 이 임베디드 컨트롤러를 선택하고 메뉴를 사용하여 탐색 컨트롤러에 임베드 할 수 있어야한다고 생각합니다. 그래도 작동하지 않으면 해당 내장 컨트롤러를 삭제하고 탐색 컨트롤러를 드래그하고 컨테이너보기에서 컨트롤 드래그를 추가하여 컨테이너를 포함시킵니다. 편집 후

:

당신이 코드에서 그것을하고 싶은 경우에, 당신이 게시 한 어떤 문제 몇 가지가있다. addChildViewController, addSubview 및 didMoveToParentViewController 호출은 모두 콘텐츠 컨트롤러가 아닌 탐색 컨트롤러에 만들어야합니다. 컨텐트 컨트롤러의 프레임을 설정할 필요가 없습니다. 네비게이션 컨트롤러의 프레임을 직접 설정하면됩니다 :

self.meetingsListViewController = [[UIViewController alloc] initWithNibName:@"MeetingsListViewController" bundle:nil]; 
    self.navCalendar = [[UINavigationController alloc] initWithRootViewController:self.meetingsListViewController]; 

    self.navCalendar.view.frame = CGRectMake(10, 54, self.view.frame.size.width/2-20, self.view.frame.size.height - 64); 

    [self addChildViewController:self.navCalendar]; 
    [self.view addSubview:self.navCalendar.view]; 
    [self.navCalendar didMoveToParentViewController:self]; 


    self.listPlaylistViewController = [[UIViewController alloc] initWithNibName:@"ListPlaylistViewController" bundle:nil]; 
    self.navPlaylist = [[UINavigationController alloc] initWithRootViewController:self.listPlaylistViewController]; 

    self.navPlaylist.view.frame = CGRectMake(self.view.frame.size.width/2+10, 54, self.view.frame.size.width/2-20, self.view.frame.size.height - 64); 

    [self addChildViewController:self.navPlaylist]; 
    [self.view addSubview:self.navPlaylist.view]; 
    [self.navPlaylist didMoveToParentViewController:self]; 
+0

고마워, 완벽하게 작동 :) –

관련 문제