2012-09-28 15 views
23

Ich habe gerade aktualisiert iOS 6, und führen Sie meinen alten Code, der in iOS 4.3 erstellt wird. Sie geben mir eine Reihe von Warnungen in meiner Bewerbung.dismissmodalviewcontrolleranimated ist veraltet zuerst veraltet in ios 6

benutzte ich presentModelViewController: und ich es dann entlassen, aber es gab warn mich

dismissModalViewControllerAnimated is deprecated first deprecated in iOS 6.

Warum sie auf diesen Code Warnung zeigen? Hier ist der Code:

[picker dismissModalViewControllerAnimated:YES]; 

Diese Zeile wird gelb und zeigt den Fehler. Bitte geben Sie mir Richtlinien, um die Warnung zu entfernen.

+2

die UIViewController docs lesen Sie werden Ihnen sagen, was Sie stattdessen verwenden sollen – wattson12

+0

Code geben, wo Sie 'Picker' ViewController erstellen und wie :) –

Antwort

2

Sie können dismissViewControllerAnimated:completion verwenden, von den iOS Developer docs

dismissViewControllerAnimated:completion:

Dismisses the view controller that was presented by the receiver. - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion Parameters

flag

Pass YES to animate the transition. completion 

A block called after the view controller has been dismissed. 

Discussion

The presenting view controller is responsible for dismissing the view controller it presented. If you call this method on the presented view controller itself, it automatically forwards the message to the presenting view controller.

If you present several view controllers in succession, thus building a stack of presented view controllers, calling this method on a view controller lower in the stack dismisses its immediate child view controller and all view controllers above that child on the stack. When this happens, only the top-most view is dismissed in an animated fashion; any intermediate view controllers are simply removed from the stack. The top-most view is dismissed using its modal transition style, which may differ from the styles used by other view controllers lower in the stack.

If you want to retain a reference to the receiver’s presented view controller, get the value in the presentedViewController property before calling this method.

The completion handler is called after the viewDidDisappear: method is called on the presented view controller. Availability

Available in iOS 5.0 and later. 
+0

danke für die führung, .. es funktioniert gut. kann ich dir eine Frage stellen? warum ihre Verwendung "completion: (void (^) (void)) completion", – Piyush

+0

ist "ein Block, der aufgerufen wird, nachdem der View-Controller entlassen wurde" – ChristianD

59

Jetzt in ios 6 Sie

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

Statt

[[Picker parentViewControl] dismissModalViewControllerAnimated:YES]; 

und

können
[self presentViewController:picker animated:YES completion:nil]; 

Statt

[self presentModalViewController:picker animated:YES]; 
4

Sie sollten nur die deprecation Warnung erhalten, wenn Ihr Implementierungsziel auf iOS gesetzt 6. So würde ich Ihre Bereitstellung Ziel überprüfen, die wahrscheinlich auf die Xcode voreingestellt. Sobald Sie diese Einstellung auf "4.3" ändern, sollten die Warnhinweise für die Vernachlässigung verschwinden.

2

ich den Code ändern

[self dismissModalViewControllerAnimated:YES]; 

zu

[self dismissViewControllerAnimated:YES]; 

und Empfangsfehler: Keine sichtbaren @interface für 'KLPARewardController spricht der Wähler 'dismissViewControllerAnimated:'