2011-12-03 3 views
24

Dans iOS 5 SDK, il existe deux méthodes de UIViewController, presentModalViewController: animé: et presentViewController: animé: completion :.Différence entre presentModalViewController et presentViewController?

Quelle est la différence entre ces deux méthodes?

La documentation dit: La méthode presentViewController: animated: completion: est la façon préférée de présenter une vue modale à partir d'iOS 5.0.

Si j'utilise un presentModalViewController: animé dans iOS 5, cela causera-t-il un bug?

Sont-ils fonctionnellement identiques?

Répondre

24

Ils semblent faire la même chose que la pomme documentation souligne, comme d'iOS 5.0 presentViewController est la meilleure façon de présenter les contrôleurs de vue, il semble que presentViewController laisse maintenant vous avez un gestionnaire d'achèvement, alors qu'auparavant vous n'avez pas que .

Et pas l'ancien presentModalViewController devrait être bien sur iOS 5.0, si elle a causé un bogue qui serait un problème pour toutes les anciennes applications et ne serait pas très rétrocompatible. En outre, il semble que maintenant avec presentViewController vous pouvez obtenir beaucoup plus d'informations sur la hiérarchie viewController car nous avons presentingViewController, presentedViewController propriétés.

+0

Merci! Il semble que si je cible iOS 5, je devrais toujours utiliser presentViewController. – YuAo

+0

Oui, si vous avez une application iOS 5 seulement oui – Daniel

13

Une autre remarque importante est que presentModalViewController sera dépréciée à l'avenir, comme mentionné dans le UIViewController.h du cadre UIKit (version Xcode 4.3.1):

// Display another view controller as a modal child. Uses a vertical sheet transition if animated.This method has been replaced by presentViewController:animated:completion: 
// It will be DEPRECATED, plan accordingly. 
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated; 

// Dismiss the current modal child. Uses a vertical sheet transition if animated. This method has been replaced by dismissViewControllerAnimated:completion: 
// It will be DEPRECATED, plan accordingly. 
- (void)dismissModalViewControllerAnimated:(BOOL)animated;