我创建了一个名为Slot的自定义类,它是UIView的子类。在槽类中,调用以下函数:
- (NSString*)assignItem:(Item*)item {
NSString *message;
if (item.slotSize + currentCapacity > slotSize) {
message = @"Sorry this item will not fit.";
} else {
//uiimageview stuff
UIImage *image = [[UIImage alloc] initWithContentsOfFile:item.imageName];
UIImageView *iv = [[UIImageView alloc] initWithImage:image];
[self addSubview:iv];
[items addObject:item];
currentCapacity = currentCapacity + item.slotSize;
message = @"Success";
}
NSLog(@"%@",message);
return message;
}
将Item(另一个自定义类,NSObject的子类)传递给Slot,UIImageView是从字符串中的项目创建到捆绑中的图像,并将其添加到子视图中。但是,图像没有显示。成功消息显示,所以我知道它进入那里。是否有另一种方法可以从子类中添加子视图,或者我只是做错了吗?
答案 0 :(得分:2)
UIImage *image = [[UIImage alloc] initWithContentsOfFile:item.imageName];
这不是实例化捆绑中的图像的正确方法。你可以使用imageNamed:像这样,
UIImage *image = [UIImage imageNamed:item.imageName];
或者,你可以像这样使用initWithContentsOfFile获取图像,
NSString *imagePath = [[NSBundle mainBundle] pathForResource:item.imageName ofType:@"JPG"]; // replace JPG with whatever is appropriate for your image.
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
imageNamed:将缓存图像,反之则不会。