2013-01-16 64 views
2

我使用presentModalViewController來顯示一些控制器。IOS使用presentModalViewController來顯示一些控制器

控制器://它將顯示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是表演,我不想叫recvPushMessage在A.

-(void)viewDidLoad{ 

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

} 
-(void)recvPushMessage{ 

    //do something for B 
} 

回答

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

更新: 關於第二個問題,你可以得到導航控制器的topViewController並與C.比較,您可以使用類似[self.modalViewController topViewController]檢查它是否是C,然後繼續。

對於如: -

if ([[(UINavigationController *)self.modalViewController topViewController] isKindOfClass:[C class]]) 
+0

presentedViewController必須是IOS5.0,如何約4.3 – zt9788

+0

你可能在該版本使用'self.modalViewController'。 – iDev

+0

讓我試試看,如果B推一些像「C」的控制器,並且C也收到這個消息,我怎麼可以把presentViewController當作C中的A @ – zt9788

相關問題