2013-04-08 58 views
92

我对图像选取器使用以下代码。但是当我在模拟器中运行它时,出现了内存泄漏,并且我收到了有关presentModalViewcontroller:animated在iOS6中被弃用的警告。我也得到dismissModalViewController:animated弃用。我正在使用SDK 6.1。presentModalViewController:动画已在ios6中弃用

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

回答

206

使用此行&检查:

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

在这个地方的:[自我presentModalViewController:imagePicker动画:是]; – Vishal 2013-04-08 08:03:31

+8

和解雇使用这个:[self dismissViewControllerAnimated:YES completion:nil]; – Vishal 2013-04-08 08:04:05

+0

获取相同的内存泄漏问题,应用程序将关闭 – Ram 2013-04-08 08:06:31

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

而不是

[[Picker parentViewControl] dismissModalViewControllerAnimated:YES]; 

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

而不是

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

,所以现在我们有presentViewController并且不指定视图控制器应该是模态的? – 2013-07-15 03:37:19

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

由于维沙尔提到

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

确保您已经添加 “完成:无” 以及

1

我们E:

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

然后你被解雇模态的使用:

[self dismissViewControllerAnimated:controller completion:nil]; 

[self dismissViewControllerAnimated:YES completion:nil];