14

次のコードを使用して、自己オブジェクトに UIViewController を含む UINavigationController を提示しました

  drawController = [[DrawImageViewController alloc] initWithNibName:nil bundle:nil];
[drawController setDrawControllerDelegateObject:self];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:drawController];
[self presentModalViewController:nav animated:YES];
[nav release];

しかし、上記のコードを 2 回目に呼び出す前に、画面に表示されている現在のビュー コントローラーが drawController であるかどうかを知りたいです。次のコードを使用しています

    if (drawController && [drawController isBeingPresented])

しかし、それは私にとっては機能せず、iOS 5.0 用でもあるため、ここで立ち往生しています。画面に表示されている現在の UIViewController がどのクラスであり、 drawContoller がまだ画面に表示されているかどうかを知る方法を教えてください。誤字脱字等ありましたら申し訳ありません。どんな助けでも大歓迎です。

ありがとうネハ・メタ

4

3 に答える 3

22

と を使用navigationController's visibleViewController propertyisKindOfClass methodて、何が起こっているかを確認しtopます。

if([self.navigationController.visibleViewController isKindOfClass:[yourcontroller class]])
   //exists
else
   //not exists
于 2012-10-16T12:34:43.090 に答える
6

最もきれいなコードではありませんが、これはうまくいくはずです:

if ([self.presentedViewController isKindOfClass:[UINavigationController class]] &&
   ((UINavigationController *)self.presentedViewController).topViewController == drawController) {
   …
于 2012-10-16T12:31:41.140 に答える
3

UINavigationControllersvisibleViewControllerメソッドを確認します。

ドキュメントについては、 UINavigationControllerを参照してください。

于 2012-10-16T12:32:15.073 に答える