2012-10-16 10 views
12

मैं दूसरी बार मैं चाहता हूँ के लिए ऊपर दिए गए कोड कॉल करने से पहले कोड निम्नलिखितजांच वर्तमान दृश्य नियंत्रक

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

लेकिन जब साथ एक UINavigationController स्वयं वस्तु पर UIViewController युक्त प्रस्तुत किया है बताते हैं कि वर्तमान दृश्य नियंत्रक प्रदर्शित होने स्क्रीन पर drawController है। मैं निम्नलिखित कोड

if (drawController && [drawController isBeingPresented]) 

लेकिन यह मेरे लिए काम नहीं कर रहा है और यह आईओएस 5.0 के लिए भी है इसलिए मैं यहां फंस गया हूं। कृपया मुझे यह जानने में मदद करें कि मुझे कैसे पता चलना चाहिए कि स्क्रीन पर दिखाई देने वाले वर्तमान UIViewController किस वर्ग के हैं और क्या DrawContoller अभी भी स्क्रीन पर प्रस्तुत किया गया है या नहीं? यदि कोई है तो मेरी टाइपो गलतियों के लिए खेद है। किसी भी तरह की सहायता को आभार समझेंगे।

धन्यवाद नेहा मेहता

उत्तर

5

नहीं सुंदर कोड है, लेकिन इस काम करना चाहिए:

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

उपयोग navigationController's visibleViewController property और isKindOfClass method पता करने के लिए क्या top पर देखें:

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

मैं यह त्रुटि बहुत छोटा हो रही थी, लेकिन आप स्वयं चारों ओर [] शामिल करने के लिए की जरूरत है। – Lion789

+0

@ शेर 789 अब आपको बहुत धन्यवाद, मैंने संपादित किया है :) –