presentModalViewController: анімований застарілий у ios6


101

Я використовую наступний код для вибору зображення. Але коли я запускаю його в тренажері, у мене витік пам'яті, і я отримую попередження про presentModalViewcontroller:animatedзастаріле в iOS6. Я також dismissModalViewController:animatedвтрачаю силу. Я використовую SDK 6.1.

Код для 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];
}

Відповіді:


216

Скористайтеся цим рядком і перевірте:

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

1
Замість цього: [self presentModalViewController: imagePicker анімований: ТАК];
Вішал

8
а для звільнення використовуйте це: [selfmissmissViewControllerAnimated: YES завершення: нуль];
Вішал

Виникнення тієї ж проблеми з витоком пам’яті та додаток закриється
Рам

Де ви отримуєте проблему - означає, в якому рядку?
Вішал

Я отримую цю помилку 'UIApplicationInvalidInterfaceOrientation', причина: 'preferenceInterfaceOrientationForPresentation має повернути підтримувану орієнтацію інтерфейсу!'
Рам

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

Замість

 [[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

і

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

Замість

[self presentModalViewController:picker animated:YES];

2
тому тепер ми представилиViewController і не вказуємо, що контролер перегляду повинен бути модальним?
Septiadi Agus

4

Як згадував Вішал

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

переконайтеся, що ви також додали "завершення: нуль"


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

2

Використання:

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

А потім для вашого способу звільнення:

[self dismissViewControllerAnimated:controller completion:nil];

або

[self dismissViewControllerAnimated:YES completion:nil];
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.