2012-12-15 1 views
6

Ho impostato un controller di navigazione, che appare dopo aver toccato un pulsante. Tuttavia, se tocco il pulsante ottengo l'errore di: "Warning: Attempt to present <UINavigationController>: 0xab5d9d0 on <MyApp: 0xadaa320> whose view is not in the window hierarchy!"La cui vista non è nel problema di gerarchia di finestre

Qualcuno sa come risolvere questo? Ho anche provato qualcosa su Stackoverflow ma non era la mia soluzione.

Ecco il mio codice per l'apertura del navigationController:

Non so se qualcuno lo sa photogallery, ma se non lo fai, here è il progetto.

Il mio codice (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]; 
} 

Grazie in anticipo.

Edit:

è nelle recources e nelle fonti di compilazione ma nelle risorse si può vedere che è rosso (storyboard). Forse è causato da questo?

Il regolatore secondo .h:

@class MyApp; 

@interface Second : UIViewController <MWPhotoBrowserDelegate> { 

} 



@property (nonatomic, retain) MyApp* vC; 

@end 

Il controllore Secnond .m:

#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

NUOVO EDIT:

ho scoperto che devo chiamare il metodo "launchGalleryView" nel viewDidAppear ma come posso fare questo senza chiamare il navcontroller ogni volta i carichi View? Qualcuno sa come fare questo?

+0

ottengo che errore quando provo a presentare un controlle r da un controller che non è il più alto al momento. Assicurati che sia il migliore e non mostri altro! – yuf

+0

come posso farlo? – MasterRazer

+0

Cosa succede se chiami [self dismissViewControllerAnimated: NO completion: nil]; prima del presenteModalViewController? Che succede? – yuf

risposta

25

ho controllato il vostro progetto .. non è stato in grado di risolvere il problema corretto ..

ma ho provato un hack e ha funzionato ..

Sostituire questa linea con

[self presentModalViewController:navController animated:YES]; 

questo

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

grazie: D;) – MasterRazer

+0

presentModalViewController è obsoleto su iOS 6.x, hai un'altra soluzione? –

+0

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