2011-12-03 18 views
24

En iOS 5 SDK, hay dos métodos de UIViewController, presentModalViewController: animated: y presentViewController: animated: completion :.Diferencia entre presentModalViewController y presentViewController?

¿Cuál es la diferencia entre estos dos métodos?

La documentación dice: El presente métodoViewController: animated: completion: es la forma preferida de presentar una vista modal desde iOS 5.0.

Si uso un presentModalViewController: animado en iOS 5, ¿provocará un error?

¿Son funcionalmente iguales?

Respuesta

24

Parece que hacer lo mismo que la manzana documentation señala, a partir de iOS 5.0 presentViewController es la mejor forma de presentar los controladores de vista, parece que presentViewController ahora le permite tener un manejador de terminación, mientras que antes no tenías que .

Y no el antiguo presentModalViewController debería estar bien en iOS 5.0, si causaba un error que sería un problema para todas las aplicaciones anteriores y no sería muy compatible con versiones anteriores. Además, parece que ahora con presentViewController puede obtener mucha más información acerca de la jerarquía viewController ya que tenemos presentingViewController, presentedViewController propiedades.

+0

Gracias! Parece que si apunto a iOS 5, siempre debería usar presentViewController. – YuAo

+0

Sí, si tienes una aplicación iOS 5 solo sí – Daniel

13

Otra nota importante es que presentModalViewController dejará de estar disponible en el futuro, como se mencionó en el UIViewController.h del marco UIKit (Xcode versión 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;