0

だから私はCSImageViews(uiviewのサブクラス)と呼ばれるクラスを持っています。これは本質的に単一のサブクラス化されたUIViewに囲まれたUIImageViewsの行です。

次のようなカスタム init メソッドを追加しました (node/yaml には uiimage 名データが含まれます)。

- (id)initWithFrame:(CGRect)frame withNode:(NSDictionary *)node
{
    self = [super initWithFrame:frame];
    if (self) {
        _node = node;
        _imageViewYAML = [node objectForKey:@"items"];
        _imageViews = [self getImageViewsForItems:_imageViewYAML];
    }
    return self;
}

そして私のgetImageViewsforItemsはそうです(それらをすべてサブビューに追加します):

-(NSArray *)getImageViewsForItems:(NSArray *)items
{
    NSMutableArray *ivs = [NSMutableArray arrayWithCapacity:[items count]];
    for (int i = 0; i < [items count]; i++) {
        NSDictionary *item = [items objectAtIndex:i];
        NSString *type = [item objectForKey:@"type"];
        NSString *name = [item objectForKey:@"name"];
        UIImage *image = [UIImage imageNamed:name];
        UIImageView *iv = [[UIImageView alloc] init];
        iv.image = image;
        iv.tag = i;
        [ivs addObject:iv];
        [self addSubview:iv];
    }
    return ivs;
}

このカスタム ビューをメイン ビューに追加しても、何も起こりません。

CSImageViews *imageViews = [[CSImageViews alloc] initWithFrame:frame withNode:node];
[view addSubview:imageViews];

しかし、この「csimageviews」コンテナーを新しい uiview に最初に追加すると、次のように表示されます。

CSImageViews *imageViews = [[CSImageViews alloc] initWithFrame:frame withNode:node];
UIView *v = [[UIView alloc] initWithFrame:frame];
[v addSubview:imageViews];
[view addSubview:v];

考え?

4

1 に答える 1

0

私の愚かなエラー。この特定のサブクラス化された UIView には、親ビュー コントローラーが表示されるたびに呼び出されるメソッドがあります。このメソッドは、実際にはビューからすべてのサブビューを削除しました...そのため、最初のビューでレンダリングしたときに uiimageviews を見ることができませんでした...おお。

于 2012-11-18T18:36:07.317 に答える