2011-09-05 7 views

Odpowiedz

9

Nic wbudowane, ale kontroler widok mógłby po otrzymaniu viewDidAppear i/lub viewWillDisappear sprawdzenie, czy ma on parentViewController, ponieważ za Apple's documentation (podkreślenie dodane):

Zobacz główne sterowniki są istotne w nawigacji , pasek zakładek i modalne hierarchie kontrolerów widoku. W każdej z tych hierarchii obiekt macierzysty jest obiektem odpowiedzialnym za wyświetlanie bieżącego kontrolera widoku. Jeśli używasz kontrolera widoku jako obiektu autonomicznego - czyli nie jako części hierarchii kontrolera widoku - wartość w tej właściwości wynosi zero.

Jeśli ma, to może ustawić odpowiednie flagi na przyszłość.

Zauważ, że prezentowane modalnie różni się od bycia naprawdę modalnym. Na przykład na iPadzie możesz umieścić jeden kontroler wewnątrz UIPopoverController, aby kontroler nie był prezentowany modalnie, ale wtedy mógłby modalnie zaprezentować inny kontroler na sobie. Drugi kontroler jest prezentowany modalnie, ale sam nie jest dialogiem modalnym, ponieważ - jeśli program jest odpowiednio skonfigurowany - użytkownik może całkowicie zignorować popover.

+1

'viewWillDisappear' jest zbyt wcześnie; Metoda 'viewDidDisappear' jest odpowiednia do sprawdzania, czy rodzic został wyzerowany, np. po wyskoczeniu stosu nav. – qix

6

Sprawdź, czy parentViewController nieruchomość Twojego UIViewController jest nil lub nie. Jeśli nieruchomość jest nil, to jest ona odrzucana w przeciwnym razie jest prezentowana.

UWAGA: Właściwość childViewController dla childViewController's parentViewController również nie byłaby nil, należy również upewnić się, że parentViewController nie jest UITableViewController.

Powiązane problemy