presentModalViewController: Animiert ist in ios6 veraltet


101

Ich verwende den folgenden Code für eine Bildauswahl. Wenn ich es jedoch im Simulator ausführe, tritt ein Speicherverlust auf und ich werde gewarnt, presentModalViewcontroller:animateddass es in iOS6 veraltet ist. Ich werde auch dismissModalViewController:animatedveraltet. Ich benutze das SDK 6.1.

Code für 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];
}

Antworten:


216

Verwenden Sie diese Zeile und überprüfen Sie:

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

1
Stattdessen: [self presentModalViewController: imagePicker animiert: YES];
Vishal

8
und zum Entlassen verwenden Sie Folgendes: [self EntlassungViewControllerAnimated: YES Vervollständigung: Null];
Vishal

Das gleiche Problem mit Speicherverlust und App wird geschlossen
Ram

Wo Sie Probleme bekommen, bedeutet in welcher Zeile?
Vishal

Ich erhalte den Fehler 'UIApplicationInvalidInterfaceOrientation', Grund: 'PreferredInterfaceOrientationForPresentation muss eine unterstützte Schnittstellenorientierung zurückgeben!'
Ram

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

Anstatt

 [[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

und

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

Anstatt

[self presentModalViewController:picker animated:YES];

2
Jetzt haben wir also PresentViewController und geben nicht an, dass der View Controller modal sein soll.
Septiadi Agus

4

Wie Vishal erwähnte

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

Stellen Sie sicher, dass Sie auch "Vervollständigung: Null" hinzugefügt haben


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

2

Verwenden:

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

Und dann für Ihre Entlassung modale Verwendung:

[self dismissViewControllerAnimated:controller completion:nil];

oder

[self dismissViewControllerAnimated:YES completion:nil];
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.