从子类添加UIImageView到UIView

时间:2014-07-02 19:35:11

标签: ios objective-c uiview uiimageview

我创建了一个名为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是从字符串中的项目创建到捆绑中的图像,并将其添加到子视图中。但是,图像没有显示。成功消息显示,所以我知道它进入那里。是否有另一种方法可以从子类中添加子视图,或者我只是做错了吗?

1 个答案:

答案 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:将缓存图像,反之则不会。