2013-01-23 11 views

Odpowiedz

11

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

  1. Gdy widok popover/modalna jest wyświetlana i usunąć
  2. 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.

4

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.

+0

dobre wyjaśnienie, tylko że przeczytałem to wcześniej: http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-co-jest-podpowiednikiem-z –

Powiązane problemy