2013-04-08 15 views
92

Sto utilizzando il codice seguente per un selettore di immagini. Ma quando lo eseguo nel simulatore, ho una perdita di memoria e ricevo un avviso su presentModalViewcontroller:animated deprecato in iOS6. Ottengo anche il dismissModalViewController:animated deprecato. Sto usando l'SDK 6.1.presentModalViewController: Animated è obsoleto in ios6

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

risposta

206

Utilizzare questa linea & controllo:

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

Al posto di questo: [auto presentModalViewController: imagePicker animato: YES]; – Vishal

+8

e per l'eliminazione usa questo: [self dismissViewControllerAnimated: YES completion: nil]; – Vishal

+0

Ottenere lo stesso problema di perdita di memoria e l'app si chiuderà – Ram

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

Invece di

[[Picker parentViewControl] dismissModalViewControllerAnimated:YES]; 

e

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

Invece di

[self presentModalViewController:picker animated:YES]; 
+2

così ora abbiamo presentViewController e non specificare che il controller di visualizzazione dovrebbe essere modale? –

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

Come accennato Vishal

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

assicurarsi di aver aggiunto "completamento: nil", così

1

siamo e:

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

E poi per il tuo licenziamento uso modale:

[self dismissViewControllerAnimated:controller completion:nil]; 

o

[self dismissViewControllerAnimated:YES completion:nil];