Attualmente sto cercando di presentare un controller di visualizzazione utilizzando un UIPresentationController
. Il mio problema è, quando la mia transizione personalizzato delegato chiamaPresentazione del controller è Nill nel delegato di transizione
func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?
mio regolatore di presentazione è nil
inducendolo un'eccezione. Lo sto presentando da un controller di visualizzazione incorporato in un controller di navigazione incorporato in un controller della barra delle linguette. Ho provato a presentarlo anche da questi controller allo stesso problema. Funziona anche correttamente quando non c'è una presentazione modale personalizzata ma il mio obiettivo è personalizzarlo. Lo chiamo quando viene selezionato un pulsante e il codice viene fornito di seguito. mapTransitionDelegate
è il mio delegato di transizione personalizzato che conservo in una proprietà di classe. Inoltre, EnlargedMapViewController()
viene inizializzato per avere una presentazione modale personalizzata in modo che venga chiamato il mio delegato di transizione.
var enlargedMapController = EnlargedMapViewController();
enlargedMapController.transitioningDelegate = mapTransitionDelegate;
presentViewController(enlargedMapController, animated: true, completion: nil);
Mi piacerebbe sapere perché questo problema si sta verificando per future conoscenze. A partire da ora, la sottoclasse UIPresentationController
non è stata ancora inizializzata a causa di questa eccezione.
è il 'EnlargedMapViewController' creato in Interface Builder? Se sì, è una trappola comune. Usa un 'IBOutlet' piuttosto che creare un'istanza al livello di programmazione. – vadian
EnlargedMapViewController() viene creato tutto in codice. Tuttavia, la mia applicazione si basa su storyboard per lo più ad eccezione di questo controller di visualizzazione – user2532485