Przyzwyczajałem się do jednego z viewWillAppear
i viewDidLoad
, to jest OK, dopóki nie wiem. Jednak myślę, że powinny istnieć pewne zasady, które wskazują, kiedy umieścić w viewWillAppear
i kiedy umieścić w viewDidLoad
?Kiedy umieścić w widokuWillAppear i kiedy umieścić w viewDidLoad?
Odpowiedz
Prosta zasada, której używam, jest to. viewDidLoad
jest, gdy zasoby widoku są ładowane. Widok nie jest jeszcze wyświetlany na ekranie. Dlatego nie należy tu umieszczać obliczeń i kodu zajmującego się geometrią i wizualizacjami widoku. Powinny być w metodzie viewWillAppear
lub viewDidAppear
.
także viewWillAppear można nazwać wielokrotnie
- Gdy widok popover/modalna jest wyświetlana i usunąć
- Kiedy alert view/actionsheet/view uiactivityController jest wyświetlany i usunięte.
Z tego powodu viewWillAppear
nie powinien zawierać kodów, których wykonanie zajmuje więcej czasu. (przynajmniej kod działający w głównym wątku). Nie należy również kodów, które należy uruchamiać tylko raz na wyświetlenie widoku.
Jest ich więcej, ale są one łatwe do zapamiętania i mam nadzieję, że to pomoże.
viewDidLoad:Ostrzega, że widok zakończeniu ładowania
viewWillAppear:Biegnie tuż przed widoku ładunku
viewDidLoad
jest rzeczy trzeba zrobić raz. viewWillAppear
jest wywoływana za każdym razem, gdy pojawia się widok. Powinieneś robić rzeczy, które musisz zrobić tylko raz w viewDidLoad
- jak ustawianie swoich tekstów UILabel
. Możesz jednak zmodyfikować określoną część widoku za każdym razem, gdy użytkownik ją obejrzy, np. , np.Aplikacja iPoda przewija tekst do początku za każdym razem, gdy przejdziesz do widoku "Teraz odtwarzane".
Jednak, gdy ładujesz elementy z serwera, musisz także pomyśleć o opóźnieniu. Jeśli zapakujesz całą komunikację sieciową do viewDidLoad lub viewWillAppear, zostaną wykonane zanim użytkownik zobaczy widok - co może skutkować krótkim zamrożeniem aplikacji. Dobrym pomysłem może być najpierw pokazanie użytkownikowi nieopancerzonego widoku za pomocą jakiegoś wskaźnika aktywności. Kiedy skończysz pracę w sieci, która może zająć sekundę lub dwie (lub nawet może się nie powieść - kto wie?), Możesz wypełnić widok swoimi danymi. Dobre przykłady tego, jak można to zrobić, można zobaczyć u różnych klientów Twittera. Na przykład, gdy przeglądasz stronę szczegółów autora w witrynie Twitterrific, widok wyświetla tylko "Ładowanie ...", aż do zakończenia zapytań sieciowych.
dobre wyjaśnienie, tylko że przeczytałem to wcześniej: http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-co-jest-podpowiednikiem-z –
- 1. Kiedy używać viewDidLoad i kiedy używać awakeFromNib
- 2. Umieścić PDF w NSData
- 3. Silniki w Railsach: kiedy umieścić kod w aplikacji, w bibliotece iw folderze dostawcy?
- 4. Umieścić opóźnienie w JavaScript
- 5. kiedy umieszczać zdjęcia w aplikacji/zestawach i kiedy do/publicznych/obrazów w szynach 3.1?
- 6. Jak umieścić plik w urządzeniu w Django?
- 7. Kiedy używać node.js i kiedy używać ajax?
- 8. Kiedy (i kiedy nie) zdefiniować Monadę
- 9. Kiedy należy używać setUpClass i kiedy __init__?
- 10. Kiedy powraca E_POINTER i kiedy E_INVALIDARG?
- 11. Kiedy używać GWT i kiedy nie
- 12. Kiedy wybrać wtyczki i kiedy wybrać podpowiedź
- 13. Gdzie umieścić "&" w parametrze funkcji?
- 14. Jak umieścić metody w zestawach?
- 15. Kiedy należy korzystać i kiedy należy importować w Aurelia?
- 16. Kiedy zastosować (pd.to_numeric) i kiedy astype (np.float64) w python?
- 17. kiedy jest inteligentny w użyciu bindService i kiedy startService
- 18. Kiedy używać @ w widoku szyn i kiedy użyć symbolu?
- 19. Kiedy używać Właściwości i kiedy Mapę w Javie?
- 20. Kiedy używać dup i kiedy używać klonu w Ruby?
- 21. Jak umieścić Regex.Matches w tablicy?
- 22. Jak umieścić listę w intencji
- 23. Jak umieścić podwójny cudzysłów w Swift String
- 24. Umieścić V8 w aplikacji OpenCL?
- 25. kiedy używać zadania i kiedy używać wątku?
- 26. Jak umieścić wpis w mapie?
- 27. Gdzie umieścić impliciteWait w kątomierzu?
- 28. Gdzie umieścić autora w cytacie?
- 29. Jak umieścić ikonę w MenuItem
- 30. Jak umieścić php w JavaScript?
Próbowałem Google ....? –