La présentation d'un Modal-Vue-Contrôleur masque la Barre de Navigation

J'ai une navigation en fonction de l'application avec une barre de navigation, mais il existe quelques cas où, au lieu de pousser une-vue-contrôleur sur la pile, j'ai besoin de présenter le point de vue du contrôleur modal. Le problème est que lorsque je rejette le modèle-vue-contrôleur, tout fonctionne comme prévu, sauf que la barre de navigation est caché et l' (vue parent) a été redimensionné, qui est le comportement attendu, selon les docs. Alors j'ai pensé que je pourrait tout simplement appeler une méthode intégrée pour afficher la barre de navigation. J'ai déjà essayé

[self.navigationController setNavigationBarHidden:NO];

ainsi que la version animée, sans succès.

La documentation en parle dans la méthode

presentModalViewController: animated:

dans la section de discussion où il est dit,

Sur iPhone et iPod touch, le point de vue de modalViewController est toujours présenté en plein écran" et "Jeux de la modalViewController propriété à l'-vue-contrôleur. Redimensionne son point de vue et l'attache à la vue de la hiérarchie."Cependant, les docs n'ont pas la moindre idée de m'en comment annuler ce processus après avoir écarté une vue modal.

Quelqu'un d'autre a vécu cela et trouvé une solution?

Edit: je vais avoir ce même problème, donc au lieu de demander à ma propre question, je suis parrain d'une prime sur celui-ci. C'est ma situation spécifique:

Dans mon cas, je suis présente une Image Picker, un Modal-Vue-Contrôleur, sur une manette de Navigation:

-(void) chooseImage {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        imagepicker = [[UIImagePickerController alloc] init];
        imagepicker.allowsEditing = NO;
        imagepicker.delegate = self;
        imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        imagepicker.navigationBar.opaque = true;
        imagepicker.wantsFullScreenLayout = NO;

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

            if (self.view.window != nil) {
                popoverController = [[UIPopoverController alloc] initWithContentViewController:imagepicker];

                [popoverController presentPopoverFromBarButtonItem:reset permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
            } else {}

        } else {
            [self.navigationController presentModalViewController:imagepicker animated:YES];   
        }
    }
}

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [self.popoverController dismissPopoverAnimated:true];
    } else {
        [self.navigationController dismissModalViewControllerAnimated:YES];
    }
    //Save the image
}

-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [self.popoverController dismissPopoverAnimated:true];
    } else {
        [self.navigationController dismissModalViewControllerAnimated:YES];
    }
}
Avez-vous trouvé une solution pour ce.. ? je suis coincé dans le même problème...
Une remarque: j'ai ce même problème, donc au lieu de demander à ma propre question, je suis parrain d'une prime sur celui-ci.

OriginalL'auteur EmphaticArmPump | 2011-08-11