1

ビューを xib で初期化したい。それがUIViewです。したがって、xib と UIView サブクラスがあり、初期化コードが以下に貼り付けられています (initWitFrame nibName)。ビューを作成するときに、ビュー コントローラーから初期化コードに xib 名をフィードします。

SubclassUIView *view = [[SubclassUIView alloc]initWithFrame:self.view.bounds nibName:@"xibName"];

私は正しい軌道に乗っていますか?これまでのところ、xib のコンテンツはビューで読み込まれません。

ちなみに、xib のメイン ビューは、UIView サブクラスのクラス タイプに設定されています。

- (id)initWithFrame:(CGRect)frame nibName:(NSString*)nibName
{
    self = [super initWithFrame:frame];
    if (self)
    {
        [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
        [self addSubview:self.view];
    }
    return self;
}
4

2 に答える 2

9

NSBundle から返されるのは NSArray (ビジュアル コントロール、主に UIViews) です。それとは別に、コードは正しいようです。機能する例を見てください:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

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

        UIView* mainView = (UIView*)[nibViews objectAtIndex:0];

        [self addSubview:mainView];
    }
    return self;
}
于 2013-02-22T12:06:50.733 に答える