2012-12-15 18 views
6

मैंने एक NavController सेट अप किया है, जो एक बटन टैप करने के बाद दिखाई देता है। हालांकि, अगर मैं बटन टैप करता हूं तो मुझे त्रुटि मिलती है: "Warning: Attempt to present <UINavigationController>: 0xab5d9d0 on <MyApp: 0xadaa320> whose view is not in the window hierarchy!"विंडो दृश्य पदानुक्रम समस्या में कौन सा दृश्य नहीं है

क्या कोई इसे हल करने के बारे में जानता है? मैंने स्टैक ओवरफ्लो पर कुछ भी करने की कोशिश की लेकिन यह मेरा समाधान नहीं था।

यहाँ navigationController खोलने के लिए मेरी कोड:

मैं अगर किसी को इस फोटोगैलरी पता नहीं जानता, लेकिन यदि आप नहीं करते हैं, here परियोजना है।

मेरे कोड (MyApp.m):

#import MyApp.h 
... 
//some stuff 
- (void)launchGalleryView 
{ 



    MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self]; 

    // Set browser options. 
    browser.wantsFullScreenLayout = YES; 
    browser.displayActionButton = NO; 


    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browser]; 

    NSMutableArray *photos = [[NSMutableArray alloc] init]; 
    MWPhoto *photo; 
    photo = [MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"callculator" ofType:@"jpg"]]; 
    photo.caption = @"The calculator is soo beateful..."; 
    [photos addObject:photo]; 

    self.photos = photos; 

    [self presentModalViewController:navController animated:NO]; 
} 

अग्रिम धन्यवाद।

संपादित करें:

यह recources में और संकलन स्रोतों में लेकिन संसाधनों में आप देख सकते हैं कि यह लाल (स्टोरीबोर्ड) है। शायद यह इसके कारण है?

दूसरा नियंत्रक ज:

@class MyApp; 

@interface Second : UIViewController <MWPhotoBrowserDelegate> { 

} 



@property (nonatomic, retain) MyApp* vC; 

@end 

Secnond नियंत्रक मीटर:

#import "Second.h" 
#import "MyApp.h" 


@interface Second() 

@end 

@implementation Second 

@synthesize vC; 
    //some stuff in here 


//the action 
    - (IBAction)dothis:(id)sender { 

     NSLog(@"launch the navcontroller"); 


     [self.vC launchGalleryView]; 

    } 

MyApp.h:

#import "Second.h" 


@interface myApp : UIViewController <MWPhotoBrowserDelegate> { 
    } 

-(void)launchGalleryView; 

NSArray *_photos; 

enter image description here

नया संपादित:

मैंने पाया मैं विधि "launchGalleryView" viewDidAppear में कॉल करने के लिए है, लेकिन मैं कैसे navcontroller हर दृश्य लोड बुला के बिना यह कर सकते हैं? क्या किसी को भी यह करना आता है?

+0

मुझे लगता है कि त्रुटि मिलती है जब मैं एक नियंत्रक पेश करने के लिए कोशिश एक नियंत्रक से आर जो इस समय सबसे ऊपर नहीं है। सुनिश्चित करें कि सबसे ऊपर है और यह कुछ और प्रस्तुत नहीं कर रहा है! – yuf

+0

मैं यह कैसे कर सकता हूं? – MasterRazer

+0

यदि आप कॉल करते हैं [स्वयं को अस्वीकार कर देखें नियंत्रकएनीकृत: कोई समापन नहीं: शून्य]; वर्तमान मॉड्यूल दृश्य नियंत्रक से पहले? क्या होता है? – yuf

उत्तर

25

.. मैं अपनी परियोजना की जाँच की उचित मुद्दा सुलझाने के लिए ..

में सक्षम नहीं था, लेकिन मैं एक हैक करने की कोशिश की और यह काम किया ..

के साथ इस लाइन की जगह

[self presentModalViewController:navController animated:YES]; 

इस

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES]; 
+1

धन्यवाद: डी;) – MasterRazer

+0

वर्तमान मॉड्यूल व्यू कंट्रोलर आईओएस 6.x पर बहिष्कृत है, क्या आपके पास दूसरा समाधान है? –

+0

http://stackoverflow.com/questions/12507455/a-lot-of-functions-are-deprecated-ios-6 – Shubhank

संबंधित मुद्दे