0

루트보기 컨트롤러가있는 기본 탐색 컨트롤러가 있습니다. 루트 뷰 컨트롤러에서, 버튼 누름에이 같은 초보기 컨트롤러 현재 :presentModalViewController : 뷰 컨트롤러를 스택에 추가 하시겠습니까?

SecondVC *secondVC = [[SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil]; 
[self.navigationController presentModalViewController:secondVC animated:YES]; 

를 제 뷰 컨트롤러에서, 다른 버튼의 누름에, I는 (제 뷰 컨트롤러를 제공 할 스토리 보드에서 이번에) :

ThirdVC *thirdVC = [[UIStoryboard storyboardWithName:@"Settings" bundle:nil] instantiateInitialViewController]; 
[self.navigationController presentModalViewController:thirdVC animated:YES]; 

그러나 이것은 아무 것도하지 않습니다. 내가 디버그를하고 그 밝혀졌다, 그 self.navigationControllernil입니다.

메인 탐색 컨트롤러가 아니어야합니까? 또는 presentModalViewController :보기 컨트롤러를 스택에 추가하지 않습니까? ID를 모달로 표시하기 전에 항상 내비게이션 컨트롤러에 뷰 컨트롤러를 설치해야합니까?

답변

3

새보기 컨트롤러 SecondVC는 모달 식으로 표시되며 navigationController의보기 컨트롤러 스택에 추가되지 않습니다. 새로운 UINavigationController를 만들고, NavVer를 모달 적으로 표시하기 전에 SecondVC를 navController에 넣어야합니다.

+0

. 확인해 주셔서 감사합니다. – DrummerB

0

귀하의보기 컨트롤러가 제시되는 동안 내비게이션 컨트롤러 안에 없습니다. 그리고 제시 컨트롤러 네비게이션 컨트롤러에 액세스 할 수 없습니다.

더욱이 모달보기 컨트롤러 아래에있는 탐색 컨트롤러에서 스택 항목을 밀거나 팝하면 아무 것도 눈치 채지 못할 것입니다.

컨트롤러를 스택에 넣으려면보기 컨트롤러를 직접 표시 할 수 있습니다.

[self.view addSubView:myViewController.view] 
myViewController.view.frame = self.view.bounds; 

보기 컨트롤러를 닫으려면 수퍼 뷰에서 간단히 제거하면됩니다.

여기의 단점은보기 컨트롤러에서 did 및 메소드가 표시되지 않는다는 것입니다. 따라서 직접 전화 할 수도 있습니다.

하지만 교장은 거의 같습니다. 또한 애니메이션 시스템을 사용하여 프리젠 테이션 애니메이션을 쉽게 시뮬레이션 할 수 있습니다.

양식 아래에 시작점을 지정한 다음 애니메이션 블록을 시작하고 view.frame을 superview.bounds에 넣어 애니메이션 시간을줍니다. 나는 2 초가 좋다는 것을 알았다. 때로는 적습니다.

이 시점에서 제시된보기는 스택에있는 컨트롤러 안에 있습니다. 이제는 제공된 뷰 컨트롤러 내에서 내비게이션 컨트롤러를 직접 수정할 수는 없지만 원래의 의도를 알려주는 델리게이트를 설정할 수 있습니다. 그러면 제시된 뷰 컨트롤러 (네비게이션 스택에있는 컨트롤러)는 요청 된대로 뷰 컨트롤러를 밀거나 팝 할 수 있습니다. 그리고 제시된 뷰 컨트롤러가 함께 표시됩니다.

다른 긍정적 인 점은 다른 앱처럼 할 수 있고 세미 모달보기를 제공한다는 것입니다. 부분적으로 투명한 배경. 이 방법을 사용하면 직접적으로 조작하지 않아도 뷰 뒤에서 일어나는 일들을 보여줄 수 있습니다.

1

당신은 같은 것을 추가해야합니다 :

내가 의심거야,하지만 난 어떤 소스를 찾을 수 없습니다
UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController:secondVC]; 
[self addChildViewController:navController]; 
[self.navigationController presentModalViewController:secondVC animated:<#(BOOL)#>] 
관련 문제