0

カスタムビューを実装しようとしています(C#カスタムUserControlと同等)

使用事例:

  1. カスタムUIViewベースのコントロールを実装しました
  2. コントロールは、特殊なXiBファイル(XibファイルA)に関連付けられています
  3. XiBの「ファイルの所有者」は、IBOutletsが定義されている特殊なクラスです。
  4. このコントロールは、別のXiBファイル(XiBファイルB)によって参照されます。

XibファイルAの要素がXibファイルB内にレンダリングされることを期待していましたが、すべてのIBOutletsが適切に関連付けられていて、UIが表示されず、「awakeFromNib」が呼び出されました。

私はここで何が間違っているのですか?

以下は、cusom XiBベースの〜control〜(別のXiBの別のコントロール/ビューによって参照される)のコードです。

@interface SeriesView ()
@property (strong, atomic, readonly) MediaViewer* mediaViewer;
- (void) OnInitialize;
- (void) awakeFromNib;
@end

@implementation SeriesView

@synthesize mediaViewer = _mediaViewer;
@synthesize image = _image;
@synthesize scroll = _scroll;

- (id)initWithFrame:(CGRect)frame
{
    if(nil == (self = [super initWithFrame:frame]))
        return nil;
    [[NSBundle mainBundle] loadNibNamed:@"SeriesView" owner:self options:nil];
    return self;
}

- (id)initWithCoder:(NSCoder*)aDecoder
{
    if(nil == (self = [super initWithCoder:aDecoder]))
        return nil;
    [[NSBundle mainBundle] loadNibNamed:@"SeriesView" owner:self options:nil];
    return self;
}

- (void) OnInitialize
{
    _mediaViewer = [[MediaViewer alloc] init];
    _image.hidden= NO;
}

- (void)awakeFromNib
{
    [super awakeFromNib];
    [self OnInitialize];    
}
@end
4

1 に答える 1

2

Per:UIViewとinitWithFrameおよびNIBファイル。NIBファイルをロードするにはどうすればよいですか?

足りない部分は

  1. カスタムビューにビューアウトレットを追加する
  2. XiBでビューを対応するルートビューに関連付ける
  3. awakeFromNibを介して「[selfaddSubview:self.view]」を呼び出す
于 2013-01-04T08:31:16.473 に答える