presentModalViewController: Animated está obsoleto no ios6

101

Estou usando o seguinte código para um seletor de imagens. Mas quando eu o executo no simulador, tenho um vazamento de memória e recebo um aviso sobre presentModalViewcontroller:animatedseu uso suspenso no iOS6. Eu também fico dismissModalViewController:animatedobsoleto. Estou usando o SDK 6.1.

Código para 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
fonte

Respostas:

216

Use esta linha e verifique:

[self presentViewController:imagePicker animated:YES completion:nil];
Vishal
fonte
1
No lugar deste: [self presentModalViewController: imagePicker animated: YES];
Vishal
8
e para descartar, use: [self CC0ViewControllerAnimated: SIM conclusão: nil];
Vishal
Obtendo o mesmo problema de vazamento de memória e o aplicativo será fechado
Ram
Onde você está obtendo problemas significa em qual linha?
Vishal
Estou recebendo este erro 'UIApplicationInvalidInterfaceOrientation', motivo: 'preferredInterfaceOrientationForPresentation deve retornar uma orientação de interface compatível!'
Ram
17
[[Picker presentingViewController] dismissViewControllerAnimated:YES completion:nil];

Ao invés de

 [[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

e

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

Ao invés de

[self presentModalViewController:picker animated:YES];
deepesh
fonte
2
então agora temos presentViewController e não especificamos que o controlador de visualização deve ser modal?
Septiadi Agus
4

Como Vishal mencionou

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

certifique-se de ter adicionado "conclusão: nil" também

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

Usar:

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

E então, para seu uso modal de dispensa:

[self dismissViewControllerAnimated:controller completion:nil];

ou

[self dismissViewControllerAnimated:YES completion:nil];
BrainyMonkey
fonte