2012-12-05 19 views
5

MyView adlı özel bir UIView sınıfında, storyboard aracılığıyla yapılandırılan UIViewController ile birlikte kullanıyorum. Görünüm özelliklerinin çoğunluğu Arayüz Oluşturucu aracılığıyla yapılandırılmıştır; Ancak, böyle, programlı benim düğme için arka planı olarak bunları kurmadan önce görüntüleri bir çift ayarlamak gerekir:Film şeridinden yüklendikten sonra UIView ayarlanıyor

-(void)setupVisuals { 
    UIImage *image = [[UIImage imageNamed:@"myButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 
    // _myButton is an IBOutlet property set through the storyboard: 
    [_myButton setBackgroundImage:image forState:UIControlStateNormal]; 
} 

sorun olduğunu _myButton de nil çünkü, başlatıcısı * den [self setupVisuals] arayamayacağımı o zaman.

ben, her şey iyi çalışır yerinde bu çağrı ile MyViewController 'ın viewDidLoad:

[(MyView*)self.view setupVisuals]; 

bu satır ekleyerek sorunu çözdü. Bununla birlikte, bu durum muhtemelen göreceli olarak yaygın bir sorun olan bir çözümden ziyade, bir çalışma ortamı gibi görünmektedir.

geçersiz kılmak için bir UIView yöntem veya viewDidLoad: mekanizması içine dokunmadan MyView sitesindeki görsellerin başlatma tamamlamak için başka bir mekanizma var mı? görünüm film şeridinden yüklü olduğu için bu durumda


*, başlatıcı initWithCoder: olduğunu. Başlatıcının doğru çağrıldığını doğruladım, ancak görseller henüz hazır değil. Doğru viewDidLoad: kullandığınız gibi

+0

IIRC 'initWithFrame: 'olarak adlandırılır bile uç/XIB'nin gelen yükleme. Oradan, süper aramadan sonra, bunu yapamaz mısın? Benzer bir problem yaşadığımı hatırlıyorum ve çözdüm ama tam olarak ne olduğunu nasıl hatırlamıyorum. Bu durumlarda –

+0

Genellikle sadece viewWillAppear' 'in "başlatma", ama çözmenin bir temizleyici yol olup olmadığını, bilmek istiyorum. Temelde görünüm, tüm çıkışları ile film şeridinden tam olarak ne zaman yüklenir? –

+0

Eğer viewController içinde viewWillAppear yönteminden sadece [self.myView setupVisuals] denediniz mi? Bu görünümü IB'de başlattıysanız ve bunu bir çıkış noktası olarak ayarladığınızda bu işe yarayacaktır. Yani @DanF –

cevap

2

geliyor. Apple'ın docs göre: Genellikle bu yöntemi geçersiz

dosyaları kalem ucu yüklendikleri kaynak görünümlerde ek başlatma yerine getirmektir. Amacınız UIView düzeyinde bu işlevleri kapsülleyen ise

, layoutSubviews deneyin.

İlgili konular