2013-08-06 43 views
6

私はSWRevealViewControllerクラスを利用するアプリケーションを開発中です。左のボタンの項目をタップしてリアビューコントローラーを表示できるので、アプリはこれまでのところ動作しますが、フロントビューコントローラーにジェスチャー認識機能を追加すると、SWRevealViewControllerはゼロになります。なぜこれが助けになるか分からない。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]; 
     }; 
    } 
} 

私はちょうど私のプロジェクトのためにこれを解決し、私は伝統的な[セグエdestinationViewController]メソッドを使用していたときself.revealViewControllerは皆無でした。

+0

ヒントありがとうございます!私の場合は間違った画面に移行したので、サイドメニューが壊れてしまいました。 –

関連する問題