2011-09-14 7 views
4

私はこのデリゲートメッセージと混同しています。私は、PopupViewControllerのナビゲーションコントローラを持っています。私が新しいviewControllerをプッシュするとき、新しいものがプッシュされる前に、現在表示されているviewControllerが何であるかわからない...UINavigationController:willShowViewController質問

私はnavigationController.topViewControllerを取得しようとしました& navigationController.visibleViewContrllerそれらを常にをプッシュするだろうというのViewControllerに等しい...私はメッセージを受けてるようですが、ビューが

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ 
    UIViewController *currentViewController = navigationController.topViewController; 
    if(currentViewController == viewController){ 
     /// THIS IF STATEMENT IS ALWAYS TRUE 
    } 
} 

を押された後に見える誰もが似て何につまずいていますか?

答えて

5

UINavigationController Class Referenceで掘り下げましたが、UINavigationControllerクラスのviewControllersプロパティを使用できるようです。

ルート・ビュー・コントローラ(ナビゲーションスタックの底)は、インデックスn-2n番号であるインデックスn-1であるtopViewController施設でバックビューコントローラ(単に覆われてしまったもの)とを有するインデックス0でありますアレイ内のビューコントローラの数。

iOS 7およびXcode 5.xでは、プロパティから返された配列にfirstObjectメッセージを送信して、ルートviewcontrollerを取得できるようになりました。同様に、のプロパティは、lastObjectメッセージをviewControllersプロパティによって返された配列に送信することによってアクセスできます。