2

J'essaie de charger un Contrôleur Modal View (1er) depuis un Modal View Controller (2nd). Bien que cela semble compliqué, ce n'est probablement pas le cas.Modal UIViewController n'apparaît pas

Le 1er contrôleur est en fait un UIWebView qui est initialisé dans la méthode loadview du fichier .m:

- (void)loadView { 

    // Initialize webview and add as a subview to LandscapeController's view 
    myWebView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
    //CGRect forceframe = CGRectMake(0, 0, 480, 320); 
    //myWebView = [[[UIWebView alloc] initWithFrame:forceframe] autorelease]; 
    myWebView.scalesPageToFit = YES; 
    myWebView.autoresizesSubviews = YES; 
    myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
    myWebView.delegate = self; 
    self.view = myWebView; 
} 

Puis, en viewDidLoad:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Load HTML file as an NSURL request 
    [self.myWebView loadHTMLString:updated_html baseURL:nil]; 

    // Invoke the covering modal view on condition 
    if (some_condition) { 
     landscapeCoverController = [[UIViewController alloc] initWithNibName:@"LandscapeCoverController" bundle:[NSBundle mainBundle]]; 

     [self presentModalViewController:landscapeCoverController animated:YES]; 
     [landscapeCoverController release]; 
    } 

Le destiné 2e contrôleur Modal View (landscapeCoverController) est initialisé avec un NIB que j'ai mis en place dans IB.

Mon objectif est de masquer conditionnellement l'UIWebView avec la vue "LandscapeCoverController", qui aura des boutons et une interactivité qui entraînera le rejet de la 2ème vue modale.

Pourquoi mon paysageCoverController ne se charge-t-il pas? Toutes les pensées grandement appréciées!

aussi ... le 1er Modal View Controller (LandscapeViewController) .h ressemble:

@class LandscapeCoverController; 

@interface LandscapeViewController : UIViewController <UIWebViewDelegate> { 
    UIWebView *myWebView; 

    LandscapeViewController *landscapeCoverController; 
} 

@property (nonatomic, retain) UIWebView *myWebView; 

@property (nonatomic, retain) LandscapeViewController *landscapeCoverController; // Modal view controller 

et ... le 2ème Modal View Controller (landscapeCoverController) viewDidLoad ne fait rien:

// NIB initialized in LandscapeViewController.m viewDidLoad: 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

} 

que je pense que la déclaration

landscapeCoverController = [[UIViewController alloc] initWithNibName:@"LandscapeCoverController" bundle:[NSBundle mainBundle]]; 
[self presentModalViewController:landscapeCoverController animated:YES]; 
[landscapeCoverController release]; 

doit gérer l'initialisation et lo ading du contrôleur ...

+0

Est-ce que 'mainScreen' a une vue dans votre application? –

+0

@sudo rm -rf (joli nom) mainScreen est une méthode de classe de UIScreen qui renvoie un objet UIScreen représentant les limites de l'écran. – Jumhyn

Répondre

1

Vous déclarez landscapeCoverController comme une instance de LandscapeViewController et vous l'attribuez en tant que UIViewController. C'est probablement votre problème (probablement le premier, car vous n'appelez aucune méthode spécifique à LandscapeViewController). De plus, puisque landscapeCoverController est une variable d'instance, vous n'avez pas vraiment besoin de le libérer après presentModalViewController. Essayez de choisir des noms de classe plus dissemblables. Cela vous sauvera de la confusion dans le futur.

+0

Merci d'avoir attrapé ça! Oui, changé le type de LandscapeViewController à LandscapeCoverController. La vue du contrôleur de couverture n'apparaît toujours pas ... Le LandscapeView (myWebView) apparaît parfaitement - il est supposé être masqué par la vue NIB du CoverController ... – Sly

+1

Avez-vous changé landscapeCoverController = [[UIViewController ...] en paysageCoverController? = [[LandscapeCoverController ...]? Et assurez-vous que vous avez le point de vue dans le jeu IB. – Jumhyn

+0

Confirmé que j'ai fait ces changements, mais ne voit toujours pas la vue de landscapeCoverController ... – Sly

Questions connexes