2011-09-05 9 views

risposta

9

Non c'è niente di costruito in, ma un controller della vista potrebbe, dopo aver ricevuto viewDidAppear e/o viewWillDisappear verifica se ha un parentViewController, dal momento che per Apple's documentation (enfasi aggiunta):

vista padre controllori sono rilevanti nella navigazione , barra delle schede e modali gerarchie di controller. In ciascuna di queste gerarchie, il genitore è l'oggetto responsabile della visualizzazione del controller di visualizzazione corrente. Se si utilizza un controller di visualizzazione come oggetto autonomo, ovvero non come parte di una gerarchia di controller di visualizzazione, il valore in questa proprietà è nil.

Se ha quindi può impostare le bandiere appropriate per riferimento futuro.

Nota che la presentazione modale è diversa dall'essere veramente modale. Ad esempio, su un iPad è possibile inserire un controller in uno UIPopoverController, in modo che il controller non sia presentato in modo modale, ma in tal caso potrebbe presentare un altro controller in modo modale su se stesso. Quindi il secondo controller è presentato in modo modale ma non è di per sé un dialogo modale perché - se il programma è impostato diversamente in modo appropriato - l'utente può semplicemente ignorare del tutto il popover.

+1

'viewWillDisappear' è troppo presto; 'viewDidDisappear' è appropriato per verificare se il genitore è stato annullato, ad es. dopo aver estratto una pila di Nav. – qix

6

Verificare se la proprietà del vostro UIViewController parentViewController è nil o meno. Se la proprietà è nil, viene chiusa, altrimenti viene presentata.

NOTA: anche la proprietà parentViewController di childViewController di UITableViewController non è nil, è necessario assicurarsi che parentViewController non sia UITableViewController.

Problemi correlati