2013-09-21 18 views
12

ile Özel görünüm. Tam olarak ne olduğundan emin değilim.iOS: Ben önemli bir şey eksik xib

Özel bir görünüm alt sınıfı var. Onun düzenini tasarlamak için bir xib dosyası oluşturdum. Sınıfa dört düğme bağladım. initWithFrame:

#import <UIKit/UIKit.h> 

@interface MCQView : UIView 
@property (strong, nonatomic) IBOutlet UIButton *btn1; 
@property (strong, nonatomic) IBOutlet UIButton *btn2; 
@property (strong, nonatomic) IBOutlet UIButton *btn3; 
@property (strong, nonatomic) IBOutlet UIButton *btn4; 

Sonra

#import "MCQView.h" 

@implementation MCQView 
@synthesize btn1,btn2,btn3,btn4; 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]]; 
      NSLog(@"%@", btn1); 

    return self; 
} 

Sonra üzerinden başka bir görünümü denetleyicisine görünümü eklemek gerekir.

Btn1 günlüğünü kaydetmeye çalıştığımda, var olup olmadığını görmek için boş yazdırır. Bunu varsaymaya başladım çünkü bunu başlatmamıştım, ama bunu nasıl yapacağımı tam olarak emin değilim, eğer bunu yeni bir düğme olarak yaratırsam, o zaman bütün bu şeylerin hepsi işe yaramaz olur mu?

cevap

13

Düzenlendi Yanıtı:

Ah, size sınıf içinde görünümünü başlatmak için çalışıyoruz beklemek? Bunu yapma.

Arabirim Oluşturucu'da, bağlantıyı otomatik olarak oluşturmak için MCQview.xib sınıfını MCQView olarak ayarlayın. Henüz yapmadıysanız tüm düğmelerinizi bağlayın. Daha sonra, özellikleri uygun gördüğünüzde otomatik olarak düzenleyebileceksiniz.

enter image description here

Orijinal Tepki

Bu bellekten yapıyorum, ama böyle yapılması gerektiğini size düşünüyorum:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil]; 

UIView *view = [[UIView alloc] init]; // or if it exists, MCQView *view = [[MCQView alloc] init]; 

view = (UIView *)[nib objectAtIndex:0]; // or if it exists, (MCQView *)[nib objectAtIndex:0]; 

[self.view addSubview:view]; 
+0

için buluyorsun öyle. Bu görünümü başka bir görünüm denetleyicisinden nasıl başlatırız? Özel xib ile. – JoshDG

+0

Görünümü başka bir görünüm denetleyicisinde başlatmak için, ** Orijinal Yanıt ** başlığı altındaki kodu kullanın. – ArtSabintsev

+0

Ah, işe yarıyor. Özel görünümü başlatmaya nasıl başlarım? – JoshDG

0

Sen XIB'nin ile düğmeleri init gerek kalmamasıdır doğru. LoadNibNamed yerine initWithNibName kullanmayı deneyin.

+1

UIView initWithNibName yanıt vermiyor: – ArtSabintsev

+0

Evet ben oldukça anlamıyorum görünümü denetleyicileri – JoshDG

4

Bu basit olmalıdır:

view = [[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]
1

Swift için (2):

var nib = NSBundle.mainBundle().loadNibNamed("MCQView", owner: self, options: nil) 
    view : MCQView = nib[0] as! MCQView 
    self.view.addSubview(view) 
İlgili konular