2013-01-23 24 views

cevap

11

Kullanacağım basit kural budur. viewDidLoad, görünümün kaynakları yüklendiği zamandır. Görünüm henüz ekranda gösterilmiyor. Dolayısıyla, görünümün geometrisi ve görselleriyle ilgili hesaplamalar ve kodlar buraya konulmamalıdır. viewWillAppear veya viewDidAppear yönteminde olmalıdırlar.

Ayrıca viewWillAppear çağrılabilir birden çok kez popover/modal görünümü gösterilir ve

  • bir uyarı görünümü/actionsheet/uiactivityController en sergileneceği ve kaldırıldığında kaldırın
    1. . Bu nedenle

  • , viewWillAppear bitirmek için daha uzun sürer kodları içermemelidir. (en azından ana iş parçacığı üzerinde çalışan kod). Her ikisi de görüntüleme başına sadece bir kez çalıştırılması gereken kodlar içermemelidir.

    Daha çok eminim var ama bunlar hatırlanması basit ve umarım yardımcı olur.

    4

    viewDidLoad: bir görünüm bittiktenUyarılar o yükleme

    viewWillAppear:çalıştırır sadece görünüm yükleri

    viewDidLoad önce bir kez yapmak zorunda şeydir. Görünüm her göründüğünde viewWillAppear çağrılır. viewDidLoad'da yalnızca bir kez yapmanız gerekenleri yapmalısınız - UILabel metinlerinizi ayarlamak gibi. Ancak, kullanıcının görüntüleyeceği her seferinde görüntünün belirli bir bölümünü değiştirmek isteyebilirsiniz, ör.iPod uygulaması, "Now Playing" görünümüne her gittiğinizde şarkı sözlerini geri kaydırır.

    Ancak, bir sunucudan şeyler yüklerken, aynı zamanda gecikmeyi de düşünmeniz gerekir. Tüm ağ iletişiminizi viewDidLoad veya viewWillAppear içine yüklerseniz, kullanıcı görünümü görmeden önce - muhtemelen uygulamanızın kısa bir dondurmasıyla sonuçlanır. Öncelikle kullanıcıya bir tür etkinlik göstergesine sahip açılmamış bir görünüm göstermek iyi bir fikir olabilir. Ağınızla işiniz bittiğinde, ikinci veya iki kez (veya kim bilir?) Bitebilir, görünümü verilerinizle doldurabilirsiniz. Bunun nasıl yapılabileceği hakkında iyi örnekler çeşitli twitter istemcilerde görülebilir. Örneğin, Twitterrific'te yazar detay sayfasını görüntülediğinizde, görünüm ağ sorguları tamamlanana kadar yalnızca "Yükleniyor ..." yazıyor.

    +0

    iyi bir açıklama, sadece burada daha önce okudum: http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of –

    İlgili konular