UIImage 仅在 UIImageView 中返回 nil

Posted

技术标签:

【中文标题】UIImage 仅在 UIImageView 中返回 nil【英文标题】:UIImage return nil only in a UIImageView 【发布时间】:2014-02-23 03:00:08 【问题描述】:

我是 ios 编程新手,遇到了一个奇怪的问题...

我创建了一个表格视图,添加了“字幕”样式的单元格。在我的代码中,我可以设置图像,一切正常。代码(g, gf and picturesArray are strings array)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    static NSString * cellIdentifier = @"fCellID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    NSString *feed = [self.g objectAtIndex:indexPath.row];
    NSString *feed1 = [self.gf objectAtIndex:indexPath.row];
    NSString *feed2 = [self.picturesArray objectAtIndex:indexPath.row];

    [cell.textLabel setText:feed];
    [cell.detailTextLabel setText:feed1];
    cell.imageView.image = [UIImage imageNamed:feed2];
    return cell;

接下来,我想在单击单元格时转到新视图。代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    GUDdfViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"GUdfView"];

    detail.titleString = [self.gf objectAtIndex:indexPath.row];
    detail.descriptionString = [self.gfs objectAtIndex:indexPath.row];
    detail.contentString = [self.gfc objectAtIndex:indexPath.row];
    detail.imageNameString = [self.picturesArray objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:detail animated:YES];

好的。所有作品;在我的新观点中,标题和副标题都有很好的内容。 但 !图像未显示...这是我在“GUDdfViewController”中设置图像的行:

[self.pictureLogoOutlet setImage:[UIImage imageNamed:self.imageNameString]];

当我使用NSLog 时,它告诉我我的对象(pictureLogoOutlet.image)null。我也试过这个:

[self.pictureLogoOutlet setImage:[UIImage imageNamed:@"baguette.png"]];

但问题是一样的......

你知道我为什么会遇到这个问题吗?我真的不明白。

【问题讨论】:

您是否将图像文件添加到项目的目标中? 继续使用日志来调查:self.pictureLogoOutlet 本身是 nil 吗?我敢打赌。 你在正确的轨道上。您只需要了解插座未初始化的原因。自然,如果它为 nil,则在 nil 上设置图像属性将无济于事。它在IB中连接吗?你是在调用 setImage: viewDidLoad 完成后吗? (从您发布的代码中可以看出。在 GUDdfVc viewDidLoad 中放置一个断点,在 setImage 上放置一个断点,然后查看首先触发哪个断点 【参考方案1】:

pictureLogoOutlet 为 nil,因为您的 GUDdfViewController 尚未初始化其 IBOutlets。 您必须为您的 viewocntroller 创建 UIImage 的属性,并在您的 GUDdfViewController 的 viewDidLoad 中使用该属性加载 imageView。

【讨论】:

以上是关于UIImage 仅在 UIImageView 中返回 nil的主要内容,如果未能解决你的问题,请参考以下文章

仅将 UIImage 移动到另一个 UIImage 内

捕获显示横向方向的 UIimage 视图中存储的图像

UIimage与UIimageView

将 UIImage 用于 UIImageView 时 UIImage 失真

使用 UIImageView 调整 UIImage

将大 UIImage 比例下载到 UIImageView