2

私は presentModalViewController を使用してコントローラーを表示します。

A controller://it は B のコントローラーを表示し、メッセージを受信します。メッセージを受信すると、B が表示されているかどうかを知りたいですか?

-(void)viewDidLoad{

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recvPushMessage:) name:RECV_PUSH_MESSAGE_NOTIFY object:nil];

}
-(void)buttonAction(id)sender{
     B* b = [B alloc] init];
     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:(UIViewController*)b];
     [self presentModalViewController:navigationController animated:YES];
     //release 
}
-(void)recvPushMessage{
   //i want to kown B is it show or not
   if(b is showing){
      //do something
   }
   else{
      //do something for A
   }

}

B コントローラー://B が表示されたとき、A で recvPushMessage を呼び出したくありません。

 -(void)viewDidLoad{

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recvPushMessage:) name:RECV_PUSH_MESSAGE_NOTIFY object:nil];

}
-(void)recvPushMessage{

   //do something for B
}
4

1 に答える 1

0

これがあなたが探しているものかどうかを確認してください。

-(void)recvPushMessage{

   if (self.presentedViewController) { //check if you have this model view controller
      //do something
   }
   else{
      //do something for A
   }
}

バージョン < iOS 5.0 の場合、使用できますself.modalViewController

更新: 2 番目の質問についてはtopViewController、ナビゲーション コントローラーを取得して C と比較できます。C[self.modalViewController topViewController]であるかどうかを確認してから続行するなどの方法を使用できます。

例:-

if ([[(UINavigationController *)self.modalViewController topViewController] isKindOfClass:[C class]])
于 2013-01-16T06:58:47.770 に答える