2010-11-08 11 views
6

Yani iki görünümüm var. Uygulamayı başlattığımda bir görünüm yükler. Daha sonra bu görünümde bir düğmeye bastığımda başka bir görüntü yükler.Görünümler arasında ileri ve geri geçiş yaptığımda, viewDidLoad'ım ikinci kez çağrılmıyor mu?

- (void)playGame { 

[levelView.view removeFromSuperview]; 
[self.window addSubview:[gameView view]]; 
[UIView commitAnimations]; 
} 

Bu sadece iyi yeni görünümünü yükler:

- (IBAction)triggerGame 
{ 

leveldata = [[NSMutableDictionary alloc] init]; 

[leveldata setValue:@"hide" forKey:@"shootarrow"]; 

[leveldata writeToFile:[self levelFilePath] atomically:YES]; 
[leveldata release]; 


Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[mainDelegate playGame]; 

} 

Bu eylem şuna benzer playgame denilen delege uygulanmasında, bir yöntemi tetikler. Sonra aynı şeyi yapan başka bir düğme var, ama beni ilk görüşe geri getiriyor. Ve de, harika çalışıyor. Bir görünümden diğerine kolayca gidebiliyorum. Ancak sahip olduğum tek sorun, ikinci görünümü ikinci kez yüklemeyi denediğimde, viewDidLoad yeniden çağrılmıyor. Bunu viewDidLoad yönteminde bir NSLog() kullanarak test ettim. Ben viewDidLoad tekrar çağrılması gerekir istediğini yapmak benim uygulama için

. Tahminimce, aralarında geçiş yaptığımda görüşüm tamamen boşaltılmamış olabilir.

Her türlü yardım büyük beğeni topluyor.

cevap

9

ViewDidAppear işlevine ihtiyacınız olduğunu düşünüyorum. viewDidLoad, bir bellek uyarısı gibi bir şeyin kaldırılmasına neden olmadıkça yalnızca görünüm başına bir kez çağrılır. viewDidAppear, görünümün görünür hale geldiği her zaman çağrılır.

+0

Eğer boşaltma yapmam gerekiyorsa, basmam gereken düğmeye bastığımda farklı katmanlar yüklemek istedim. Bunu nasıl yaparım? –

+0

Plus Hızlı yanıtlar için ikinize de teşekkür ederim. –

+0

nvm Çalıştırdım. Teşekkürler. –

4

İsterseniz -viewDidAppear: "görünüm her gösterildiğinde" şeyler için.

İlgili konular