自定义UITableViewCell imageview未显示

时间:2014-07-09 21:17:07

标签: ios objective-c uitableview

好的,所以我将复杂的应用程序修剪成一个简单的陷入困境的版本,供所有人理解。首先,我从服务器下载一个zip文件,解压缩并将其放在缓存目录文件夹中。所有在AppDelegate中发生的事情并解压缩并存储图像就好了。在tableviews veiwdidload方法调用时,我调用一个函数来查找iPhones缓存目录文件夹中的图像文件。找到成功的图像文件后,我将获取该图像的文件路径

·H

@property (nonatomic, strong) IBOutlet UIImageView *theImage;

的.m

NSString * photo;

NSString * photoType = @"6F0C437D-1BB2-482B-BF11-39BCAB668E4C";

photo = [NSString stringWithFormat:@"BANNERLOGO%@.png", photoType];


NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);


NSString * cacheDir = [cachesPaths objectAtIndex:0];

cacheDir = [cacheDir stringByAppendingPathComponent:@"1D2EA159-A312-4FB5-8FE5-B95879B242BB"];


NSString * photoPath = [cacheDir stringByAppendingPathComponent:photo];

BOOL success = [fileManager fileExistsAtPath:photoPath];

if (!success) {
    NSLog(@"Error!!");
}

UIImage *image = [UIImage imageWithContentsOfFile:photoPath];

[self.theImage setImage:image];

所以这是我的问题。我似乎无法弄清楚为什么我抓住的图像没有显示出来?有没有人有任何想法为什么会这样?奇怪的是,当我设置tableview单元格的颜色时,它会像我预期的那样变成灰色。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{



    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MainCell"];

    if (cell == nil) {


        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"];

    }

    //DoesNot
    cell.bannerImageView.image = self.theImage.image;


    //Shows up in cell
   cell.backgroundColor = [UIColor colorWithRed:0.9f green:0.9f blue:0.9f alpha:1.0f];

    return (UITableViewCell *)cell;
}

这是我自定义单元格类的代码,如果有帮助的话。

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
 CGRect contentRect = self.contentView.bounds;

        contentRect.size.height = 56.0;


        self.bannerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 56)];

        self.bannerImageView.contentMode = UIViewContentModeScaleAspectFit;

        [self.contentView addSubview:bannerImageView];



    }

    return self;
}

提前感谢您的指导!

3 个答案:

答案 0 :(得分:1)

尝试设置imageView背景颜色(比如绿色)以查看是否存在布局问题或图像加载问题。

答案 1 :(得分:0)

如果self.theImage.image返回null,请尝试查看UIImage *image = [UIImage imageWithContentsOfFile:photoPath];是否返回了某些内容,如果它返回了某些内容,请尝试将[self.theImage setImage:image];更改为self.theImage.image = [UIImage imageWithContentsOfFile:photoPath];

答案 2 :(得分:0)

好的,我弄清楚了我的问题。所以我很欣赏记录照片的所有建议,这对我很有帮助。所以首先我创建一个返回图像的UIImage方法。然后我调用了该方法,并直接设置了cell.bannerImageView:

[cell.bannerImageView setImage:[TableViewController banner]];

然后我必须将该图像添加到单元格视图中,如下所示:

 [cell.contentView addSubview:cell.bannerImageView];

希望这对其他人都有帮助!