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

Antworten:

216

Verwenden Sie diese Zeile und überprüfen Sie:

[self presentViewController:imagePicker animated:YES completion:nil];
Vishal
quelle
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];
deepesh
quelle
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

Krishna Sapkota
quelle
4
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
{
    [self presentViewController:objSignupViewController animated:^{} completion:nil];
}
else
{
    [self presentModalViewController:objSignupViewController animated:YES];
}
Mohit
quelle
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];
BrainyMonkey
quelle