2014-04-04 2 views
1

UIViewController (RootViewController)를 UIWindow의 루트보기 컨트롤러로 설정했습니다. 모든보기 /보기 컨트롤러가 UINavigationController를 포함하여이 RootViewController 하위보기에 추가됩니다.UIViewContoller에 뷰가 추가되면 UINavigationContoller가 작동하지 않습니다.

UINavigationController의 iOS7에서 이전보기 컨트롤러로 다시 스 와이프 할 수있는 새로운 동작이 있음을 발견했습니다. 하지만 제 경우에는 효과가 없습니다.

UINavigationController를 UIWindow의 루트보기 컨트롤러로 설정하면. 그것은 작동합니다.

그래서 내 질문은 UIViewController에 추가 된 경우 다시 스 와이프 할 수 없습니까?

업데이트 :
그것은 탐색 모음이 숨겨져있는 경우 슬쩍 기능을 사용할 수 없습니다 것으로 나타났다 ....

답변

1

이 아마 제대로 뷰 컨트롤러의 봉쇄를 설정하지 함께 할 수있는 뭔가가. UIWindowrootViewController에 하위보기로 내비게이션 컨트롤러의보기를 추가 할 때 -viewDidLoad이 내비게이션 컨트롤러의보기 컨트롤러에서 호출되지 않을 것입니다. 문학의 좋은 비트가 제대로 지정보기 컨트롤러 봉쇄를 설정하는 방법에 거기에있다 같은 당신의 뷰 컨트롤러의 오른쪽 방법 화재 :

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

또한, 애플은이 상호 작용을 전환 API를 사용한 경우 가능한 한 네비게이션 컨트롤러의 델리게이트가 네비게이션 컨트롤러가 UIWindow에서 루트 뷰 컨트롤러로 설정된 경우와 같이 제대로 연결되지 않았거나 부모 뷰 컨트롤러가 제스처를 도용하거나 숨기는 것과 관련이 있습니다. 내가 먼저 탐색 컨트롤러의 팝업 제스처 위임을 살펴 볼 것입니다 경우 그것을하지 nil :

NSLog(@"%@", self.navigationController.interactivePopGestureRecognizer.delegate); 

nil는 내가 탐색 컨트롤러의 제스처 인식기는 일반적으로 해고 할 수 있는지 확인 할 아닌 경우 :

// In the navigation controller's root view controller, try this: 
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move)]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[self.view addGestureRecognizer:panRecognizer]; 


// Then test to see if its working: 
- (void)move { 
    NSLog(@"Hello world."); 
} 
+0

감사합니다. Aaron! 내비게이션 막대를 숨기면 스 와이프가 비활성화됩니다. –

관련 문제