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 –
Próbowałem Google ....? –