viewDidLoad adalah hal yang harus Anda lakukan sekali. viewWillAppear dipanggil setiap kali tampilan muncul. Anda harus melakukan hal-hal yang hanya perlu Anda lakukan sekali di viewDidLoad - seperti mengatur teks UILabel Anda. Namun, Anda mungkin ingin memodifikasi bagian tertentu dari tampilan setiap kali pengguna melihatnya, misalnya aplikasi iPod menggulirkan lirik kembali ke atas setiap kali Anda pergi ke tampilan "Now Playing".
Namun, ketika Anda memuat sesuatu dari server, Anda juga harus memikirkan latensi. Jika Anda mengemas semua komunikasi jaringan Anda ke dalam viewDidLoad atau viewWillAppear, mereka akan dieksekusi sebelum pengguna dapat melihat tampilan - mungkin mengakibatkan pembekuan singkat aplikasi Anda. Mungkin ide yang baik untuk pertama kali menunjukkan kepada pengguna tampilan yang tidak berpenghuni dengan semacam indikator aktivitas. Ketika Anda selesai dengan jaringan Anda, yang mungkin memakan waktu satu atau dua detik (atau bahkan mungkin gagal - siapa tahu?), Anda dapat mengisi tampilan dengan data Anda. Contoh bagus tentang bagaimana ini bisa dilakukan dapat dilihat di berbagai klien twitter. Misalnya, ketika Anda melihat halaman detail penulis di Twitterrific, tampilan hanya mengatakan "Memuat ..." sampai permintaan jaringan selesai.
Awalnya hanya ViewDidLoad dengan tableView. Pada pengujian dengan kehilangan Wifi, dengan mengatur perangkat ke mode pesawat, menyadari bahwa tabel tidak menyegarkan dengan kembalinya Wifi. Bahkan, tampaknya tidak ada cara untuk me-refresh tableView pada perangkat bahkan dengan menekan tombol home dengan mode latar belakang diatur ke YES di -Info.plist.
Solusi saya:
sumber
Penting untuk dicatat bahwa menggunakan viewDidLoad untuk penentuan posisi agak berisiko dan harus dihindari karena batasan tidak ditetapkan. ini dapat menyebabkan hasil yang tidak terduga (saya memiliki berbagai masalah ...)
Posting ini menjelaskan dengan sangat baik berbagai metode dan apa yang terjadi pada masing-masing metode tersebut.
saat ini untuk init dan posisi sekali pakai saya sedang berpikir untuk menggunakan viewDidAppear dengan sebuah flag, jika ada yang punya rekomendasi lain tolong beri tahu saya.
sumber
Tergantung, Apakah Anda memerlukan data untuk dimuat setiap kali Anda membuka tampilan? atau hanya sekali ?
viewDidLoad:
Pemrosesan apa pun yang Anda miliki perlu dilakukan sekali.viewWilLAppear:
Pemrosesan apa pun yang perlu diubah setiap kali halaman dimuat.Label, ikon, judul tombol, atau sebagian besar data yang dimasukkan oleh Pengembang biasanya tidak berubah. Nama, foto, tautan, status tombol, daftar (masukan Array untuk tabel AndaDilihat atau koleksiLihat) atau sebagian besar data yang dimasukkan oleh Pengguna biasanya melakukan perubahan.
sumber
viewWillAppear
Anda dapat meminta dan memeriksa tweet terbaru.viewDidAppear
sudah terlambat untuk itu