presentModalViewController: Animated est obsolète dans ios6


101

J'utilise le code suivant pour un sélecteur d'images. Mais lorsque je l'exécute dans le simulateur, j'ai une fuite de mémoire et je reçois un avertissement indiquant que je suis presentModalViewcontroller:animatedobsolète dans iOS6. Je suis également dismissModalViewController:animatedobsolète. J'utilise le SDK 6.1.

Code pour ImagePicker:

- (void)showAlbum:(id)sender { 
    imagePicker=[[UIImagePickerController alloc]init];
    imagePicker.delegate = self;
    imagePicker.allowsEditing =NO;
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:imagePicker animated:YES];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    //release picker
    [picker dismissModalViewControllerAnimated:YES];
}

Réponses:


216

Utilisez cette ligne et vérifiez:

[self presentViewController:imagePicker animated:YES completion:nil];

1
À la place de ceci: [self presentModalViewController: imagePicker animated: YES];
Vishal

8
et pour rejeter, utilisez ceci: [self ignoreViewControllerAnimated: YES completion: nil];
Vishal

Obtenir le même problème de fuite de mémoire et l'application se fermera
Ram

Où avez-vous le problème signifie dans quelle ligne?
Vishal

Im obtenant cette erreur 'UIApplicationInvalidInterfaceOrientation', raison: 'preferInterfaceOrientationForPresentation doit retourner une orientation d'interface prise en charge!'
Ram

17
[[Picker presentingViewController] dismissViewControllerAnimated:YES completion:nil];

Au lieu de

 [[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

et

[self presentViewController:picker animated:YES completion:nil];

Au lieu de

[self presentModalViewController:picker animated:YES];

2
alors maintenant nous avons presentViewController et ne spécifions pas que le contrôleur de vue doit être modal?
Septiadi Agus

4

Comme Vishal l'a mentionné

[self presentViewController:imagePicker animated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];

assurez-vous que vous avez également ajouté "complétion: nil"


4
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
{
    [self presentViewController:objSignupViewController animated:^{} completion:nil];
}
else
{
    [self presentModalViewController:objSignupViewController animated:YES];
}

2

Utilisation:

[self presentViewController:imagePicker animated:YES completion:nil];

Et puis pour votre utilisation modale de licenciement:

[self dismissViewControllerAnimated:controller completion:nil];

ou

[self dismissViewControllerAnimated:YES completion:nil];
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.