0 votes

Le retour de la vue horizontale fait planter l'application iPhone

Voici mon problème : - J'ai un contrôleur de navigation et à l'intérieur de celui-ci un contrôleur de barre d'onglets avec 4 contrôleurs de vue. - Je veux ajouter la fonctionnalité suivante : - Sur landscapeRight pour rejeter le navcontroller, le contrôleur de la barre d'onglets et tout le reste et charger un tout nouveau contrôleur - celui-ci fonctionne bien, voici le code :

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    // Just delete the lines for the orientations you don't want to support
    if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
            [appDelegate ToHorizontalAverageResponseView:self];
    }
    return YES;
}

Voici le code dans le délégué de l'application :

- (void)ToHorizontalAverageResponseView:(id)sender
{
    HorizontalResponseViewController *tempController = [[HorizontalResponseViewController alloc] initWithNibName:nil bundle:nil];
    [self setHorizontalResponseViewController: tempController];
    [tempController release];
    //[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
    // View rotation transformation
    CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation( M_PI * 90.0 / 180.0 );
    [[horizontalResponseViewController view] setTransform:landscapeTransform];

    [window addSubview:[horizontalResponseViewController view]];
}

La question est de savoir comment revenir à la vue portrait et à tous ces contrôleurs de barre de navigation et de barre d'onglets ?

Merci, Mladen

0voto

Hauke Points 1298

On dirait que vous essayez de construire quelque chose qui ressemble à la transition iPod-CoverFlow. La question (sur la façon de construire l'effet coverflow) a été posée dans le cours CS193P de Stanford et la réponse a donné une indication dans la direction suivante :

Si vous pouvez vous permettre la surcharge de mémoire, la meilleure chose à faire est d'ajouter une nouvelle vue de paysage au-dessus de toutes les vues de portrait (sans les supprimer comme vous le suggérez). L'utilisateur interagit alors avec cette vue paysage comme il le souhaite jusqu'à ce qu'il revienne à la vue portrait. Pendant tout ce temps, les vues portrait restent tranquillement en arrière-plan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X