2011-09-29 16 views
6

İki görüntüleme denetleyicisi arasında bir segue uygularken segue nesnesini kullanarak hedef görünüm denetleyicisinin bir özelliğinin nasıl değiştirileceği? Dokümantasyon, bunun preparaForSegue: sender: yöntemi içinde yapılabileceğini söylüyor. denedim ama başarılı olmadıiOS 5 güvenlik denetimi

cevap

13

Eğer bunun için hala bir cevaba ihtiyacınız varsa, ama bu çok yalnız bir mesajdıysan, ve eğer haklıysam, bu artık NDA'nın altına düşmez. Eğer yanılıyorsam, lütfen cevabımı unutmamak için yönlendirin, işte gidelim: İhtiyacınız olan şeyi kullanan bir şey yapmayı bitirdim.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"relevantSegueIdentifier"]) 
    { 
     // [segue destinationViewController] is read-only, so in order to 
     // write to that view controller you'll have to locally instantiate 
     // it here: 
     ViewController *upcomingViewController = [segue destinationViewController]; 

     // You now have a solid reference to the upcoming/destination view 
     // controller. Example use: Allocate and initialize some property of 
     // the destination view controller before you reach it and inject a 
     // reference to the current view controller into the upcoming one: 
     upcomingViewController.someProperty = [[SomePropertyClass alloc] initWithString:@"Whatever!"]; 
     upcomingViewController.initialViewController = [segue sourceViewController]; 
     // Or, equivalent, but more straightforward: 
     //upcomingViewController.initialViewController = self; 
    } 
} 

Bu someProperty ve initialViewController hem hedef görünümü denetleyicisi erişimcilere sentezlenir varsayar: Bu benim için çalışıyor koddur. Bu yardımcı olur umarım!

+0

NDA'nın altına düşüyor, ancak 3 gün içinde resmi sürüm 14 Ekim'de değil, ama cevabını beğeniyorum +1 –

+0

Ne dediğini denedim ama 'destinationViewController'daki özellikler güncellemeyi yapmıyor . Herhangi bir tavsiye? – Francesco

+0

Hedef görüntüleme denetleyicisinin sentezlenmiş bir erişimcisini (özel bir ivar değil) kullanırsınız ve uygulama denetleyicisi (örneğin gerçek görünüm denetleyicileriyle yerleştirilmiş storyboard, bunların tümü örneklenmiş @ uygulama arasında bir segue ile) başlatmak). Bu durumda, çalışması gerekir. Öyleyse, sisteme özgü desti hakkında bilmeyen bir şey olabilir. denetleyici sınıfını görüntüle. Benim örneğimdeki ViewController sınıfı UIViewController'ın bir alt sınıfıdır ve @implementation öncesinde "#import" ViewController.h "gibi bir şey yapıyorum. Bu şeylerden biri olabilir mi? – DarqueSandu

0

Bu konu hakkında bir video hazırladım. Umut ediyorum bu yardım eder. Ben kaynak görünümü denetleyicisi kullanmak ne http://full.sc/17yKkZF

0

geçerli:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *upcomingViewController = [segue destinationViewController]; 
    upcomingViewController.view.tag = [[segue identifier] hash]; 
} 

Ve sonra hedef görünümü denetleyicisi I (viewDidAppear örneğin kullanımını)

if(self.view.tag == [@"MySeqgueIdentifier" hash]) 
{ 
    // Do something here... 
} 

Bu yana, serin kullanmak herhangi bir özellik vb. oluşturmanız gerekmez ve her şey arayüz oluşturucudan çalışır.