2010-11-01 13 views
20

Birkaç özel görünüm, yeniden kullanılabilir UI bileşenleri oluşturmak ve UI'yi, UIView alt sınıfında kod olarak düzenlememeyi tercih ederim. Bunun için bir xib kullanmak istiyorum. Kendi başına bir xib kullandım. Ve kendi başına bir UIView alt sınıfı kullandım. Ama onları birlikte kullanmamıştım. Onları birbirine nasıl "ekleyebilirim?" Özel görünümümde UILabels'e erişmek için IBOutlets kullanmak istiyorum.Bir xib ve UIView alt sınıfı nasıl kullanılır?

Bu tür bir şey işe yarayacak mı? Her zamanda sizin kabul edemeyiz

:

NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil]; 
MyCustomView *view = [xib objectAtIndex:0]; 
view.myLabel.text = @"fred"; 
+2

http://stackoverflow.com/a/5056886/385619 bakın – Willster

cevap

14

Evet o size 15 Ağustos 2013 viewControllers

Düzenleme için ebeveynler olmayan xibs yükleme yaparken bunun işe yaradığını yolu Tam olarak ne tür bir tam olarak ne almak için geri döner NSArray, hangi tür kontrol kullanmak için iyi yapar.

NSArray *xibArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil]; 
MyCustomView *myView = nil; 
for (id xibObject in xibArray) { 
//Loop through array, check for the object we're interested in. 
    if ([xibObject isKindOfClass:[MyCustomView class]]) { 
     //Use casting to cast (id) to (MyCustomView *) 
     myView = (MyCustomView *)xibObject; 
    } 
} 
+2

bu ben istediğim şekilde işe yaramadı. UIView alt sınıfını oluşturdum, sahip olduğum iki UILabels için IBOutlets ekledim. Interface Builder'da UIView alt sınıfım için görünüm sınıfını değiştirdim ve iki etiketimin referans çıkışlarını görünüme ayarladım. – Ron

+0

Aynı şeyi yapmaya çalışıyorum - (a) ebeveyn UIControllerView ve (b) özel UIView'in kendisi için hangi sınıf adını kullanmam gerektiğini biliyor musunuz? Koduma ekledim, hem özel UIView sınıf ismim var, hem de bana özel UIView init metoduna tekrarlayan bir çağrı veriyor. Bu benim özel görünümü kullanan ebeveyn UIControllerView (a) var, bu XIB için XIB için ben classname "clockview" olarak ayarladım bir UIView kullanıyorum, ama sonra (b) benim gerçek clockview özel UIView (değil UIControllerView) XIB dosyası Ben aynı şeyi yaptım ve sınıf adı "clockview" olarak ayarlayın. – Greg

+0

Bu çok zaman alıcı! başka hile? – Krish

İlgili konular