2014-12-22 8 views
0

UIPageViewController에 세 개의 내비게이션 컨트롤러가있는 응용 프로그램이 있습니다.iOS pageviewcontroller disable swipe

           |-> Detail View 
         |-- nav 1 -> root view -| 
         |      |-> Search View 
UIPageViewController -|-- nav 2 -> root view 
         | 
         |-- nav 3 -> root view 

Nav 1, 2 및 3에는 모두보기가 있습니다. 문제는 내비게이션 컨트롤러 중 하나의 하위 뷰를 열어도 여전히 3 개의 개별 탐색 컨트롤러 사이를 스 와이프 할 수 있다는 것입니다. 탐색 컨트롤러의> 1 레이어 깊이 (세부 정보 또는 검색보기) 인 경우 스 와이프를 사용 중지하고 싶습니다.

답변

0

3 개의 내비게이션 컨트롤러가있는 이유는 무엇입니까?

PageViewController를 NavigationController에 넣으십시오. 이와 같이 스 와이프 제스처를 사용 중지 할 필요는 없습니다.

하지만이 아키텍처를 실제로 사용하려는 경우 데이터 원본을 제거 할 수 있습니다. dataSource이 없으면 pageViewController가 슬라이드되지 않습니다. 다시 스 와이프를 사용하려면 dataSource를 다시 설정하십시오.

// Methods of the data source are called in response to gesture-based navigation. 
// If the value of this property is nil, then gesture-based navigation is disabled. 
+0

그러면 세 가지보기 모두에 대해 하나의 탐색 막대가 있기 때문입니다. 각보기에 대해 하나의 탐색 막대가 필요합니다. – switz

+0

'dataSource'를'nil'으로 설정하면 다음과 같은 오류가 발생합니다 :'*** 캐치되지 않은 예외로 인해 응용 프로그램 종료 중 'NSInternalInconsistencyException', 이유 : '유효하지 않은 매개 변수가 잘못되었습니다 : [조회수] == 3' – switz

+0

It 당신의 코드에서 어딘가에 변수'views'을 만들었습니까? 그렇지 않으면 * WOW * 솔루션 사용을 고려하십시오. gestureRecognizer를 뷰에 유지하고 인식기의 'enabled'속성에 'true'또는 'false'를 설정할 수 있습니다. – Crazyrems