2011-12-03 15 views
24

In iOS 5 SDK, esistono due metodi di UIViewController, presentModalViewController: animato: e presentViewController: animato: completamento :.Differenza tra presentModalViewController e presentViewController?

Qual è la differenza tra questi due metodi?

La documentazione dice: presentViewController: animated: completion: metodo è il modo preferito per presentare una vista modale come da iOS 5.0.

Se utilizzo un presentModalViewController: animato in iOS 5, causerà un errore?

Sono funzionalmente identici?

risposta

24

sembrano fare la stessa cosa di mela documentation sottolinea, come di iOS 5.0 presentViewController è il modo migliore per presentare vista controllori, sembra che presentViewController ora ti permette di avere un gestore di completamento, mentre prima non si aveva che .

E nessun vecchio presentModalViewController dovrebbe andare bene su iOS 5.0, se causasse un bug che sarebbe un problema per tutte le vecchie applicazioni e non sarebbe molto compatibile con le versioni precedenti. Inoltre sembra che ora con presentViewController è possibile ottenere molte più informazioni sulla gerarchia viewController poiché abbiamo presentingViewController, presentedViewController proprietà.

+0

Grazie! Sembra che se scelgo come target iOS 5, dovrei sempre usare presentViewController. – YuAo

+0

Sì se hai un'app solo iOS 5 sì – Daniel

13

Un'altra nota importante è che presentModalViewController sarà deprecato in futuro, come menzionato nella UIViewController.h del quadro UIKit (Xcode versione 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;