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];
}
RAM
la source

Réponses:

216

Utilisez cette ligne et vérifiez:

[self presentViewController:imagePicker animated:YES completion:nil];
Vishal
la source
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];
deepesh
la source
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"

Krishna Sapkota
la source
4
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
{
    [self presentViewController:objSignupViewController animated:^{} completion:nil];
}
else
{
    [self presentModalViewController:objSignupViewController animated:YES];
}
Mohit
la source
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];
BrainyMonkey
la source