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];
}

Respostas:


216

Use esta linha e verifique:

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

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];

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


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

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];
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.