2013-08-06 12 views
6

SWRevealViewController 클래스를 사용하는 앱에서 작업하고 있습니다. 응용 프로그램은 지금까지 작동, 후면보기 컨트롤러를 꺼내기 위해 왼쪽 막대 버튼 항목을 살짝 할 수 있지만, 전면보기 컨트롤러에 제스처 인식기를 추가하면 SWRevealViewController는 nil입니다. 나는 이것이 왜 도움이 될지 전혀 모른다.제스처 인식기를 추가 할 때 SWRevealViewController는 nil입니다.

//not nil here. 
SWRevealViewController *revealController = [self revealViewController]; 
//somehow it becomes nil on the very next line and from then on I can't hold the reference to it 
[self.navigationController.navigationBar addGestureRecognizer:[revealController panGestureRecognizer]]; 

UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon.png"] 
                    style:UIBarButtonItemStyleBordered target:revealController action:@selector(revealToggle:)]; 

답변

1

스토리 보드를 사용하고 있습니까?

만약 그렇다면 prepareForSegue:에 다음과 같이 섹그가 SWRevealViewControllerSegue 클래스인지 확인하고 있습니까?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue isKindOfClass: [SWRevealViewControllerSegue class]]) { 

     SWRevealViewControllerSegue* rvcs = (SWRevealViewControllerSegue*) segue; 

     SWRevealViewController* rvc = self.revealViewController; 

     rvcs.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) { 

     UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:dvc]; 
     [rvc setFrontViewController:nc animated:YES]; 
     }; 
    } 
} 

난 그냥 내 프로젝트를 위해이 문제를 해결 나는 전통적인 [SEGUE destinationViewController] 방법을 사용하여 때 self.revealViewController는 전무했다.

+0

힌트를 보내 주셔서 감사합니다! 제 경우에는 잘못된 화면으로의 전환 이었지만 사이드 메뉴가 깨졌습니다. –

관련 문제