Search code examples
iphoneiosuiviewuiimageviewaddsubview

Subclassed UIView not displaying UIImageViews added to it


So I have class called CSImageViews (subclass of uiview), that is essentially a row of UIImageViews enclosed in a single subclassed UIView.

I've added a custom init method like so (node/yaml contains uiimage name data):

- (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;
}

And my getImageViewsforItems is like so (adds them all to subview):

-(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;
}

Now when I add this custom view to my main view like this nothing happens:

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

But if I add this 'csimageviews' container into a new uiview first it appears:

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

thoughts?


Solution

  • Stupid error by me. In this particular subclassed UIView I have a method that was called every time its parent view controller was shown. This method actually removed all subviews from the view... so I wasn't able to see the uiimageviews when I rendered it in the initial view... doh.