2012-10-16 9 views
12

ho presentato un UINavigationController contenente UIViewController sull'oggetto sé con seguente codiceassegno vista corrente di controllo sopra lo schermo in ios

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

Ma quando prima di chiamare il codice qui sopra per la seconda volta voglio sapere se l'attuale controller della vista che appare sullo schermo è drawController. Sto usando il seguente codice

if (drawController && [drawController isBeingPresented]) 

Ma non funziona per me ed è anche per iOS 5.0, quindi sono bloccato qui. Per favore aiutami a sapere come dovrei venire a sapere che l'attuale UIViewController apparso sullo schermo è di quale classe e se drawContoller è ancora presentato sullo schermo o no? Scusa per i miei errori di battitura se ce n'è. Qualsiasi aiuto sarà apprezzato.

Grazie Neha Mehta

risposta

5

non il codice più bella, ma questo dovrebbe funzionare:

if ([self.presentedViewController isKindOfClass:[UINavigationController class]] && 
    ((UINavigationController *)self.presentedViewController).topViewController == drawController) { 
    … 
21

Usa navigationController's visibleViewController property e isKindOfClass method di sapere che cosa è sulla top:

if([self.navigationController.visibleViewController isKindOfClass:[yourcontroller class]]) 
    //exists 
else 
    //not exists 
+1

mi è stato sempre questo errore molto piccolo, ma è necessario includere [] intorno al sé. – Lion789

+0

@ Lion789 grazie mille ora ho modificato :) –

Problemi correlati