2012-10-16 15 views
12

Mam przedstawiony UINavigationController zawierający UIViewController na obiekcie siebie z następującym kodemsprawdzić aktualny widok kontroler na ekranie w iOS

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

ale kiedy przed wywołaniem powyższy kod po raz drugi Chcę wiedzieć, czy obecny kontroler widok pojawiające na ekranie jest drawController. Korzystam z następującego kodu:

if (drawController && [drawController isBeingPresented]) 

Ale to nie działa dla mnie, a także dla iOS 5.0, więc utknąłem tutaj. Pomóż mi dowiedzieć się, jak powinienem poznać bieżący UIViewController, który pojawił się na ekranie, a która klasa i czy drawContoller jest nadal wyświetlany na ekranie, czy nie? Przepraszam za błędy literówki, jeśli są jakieś. Każda pomoc zostanie doceniona.

Dzięki Neha Mehta

Odpowiedz

5

Nie najładniejszy kod, ale to powinno działać:

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

Zastosowanie navigationController's visibleViewController property i isKindOfClass method wiedzieć, co jest na top:

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

I był już ten błąd bardzo mały, ale trzeba to [] wokół siebie. – Lion789

+0

@ Lion789 bardzo dziękuję, teraz edytowałem :) –

Powiązane problemy