[ios]图像从第一个 ViewController 到第二个 ViewController

发布时间: 2017/3/21 23:39:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 2 ViewControllers 1 按钮在哪下载图像,如何可以缓存此图像和发送到第二个 ViewController?多谢。

第一 ViewController:

在.h

@interface asdViewController : UIViewController {

    IBOutlet UIButton *actBtnGet;



}
@property (strong, nonatomic) IBOutlet UIImageView *ImageView;

@end

在.m

- (IBAction)actBtnGet:(id)sender {
    id path = @"http://www.host.com/132.png";
    NSURL *url = [NSURL URLWithString:path];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img = [[UIImage alloc] initWithData:data];
    self.ImageView.image=img;

}

解决方法 1:

在你第二视图控制器中创建一个属性︰

// inside your Second View Controller .h file
@property (nonatomic, strong) UIImage *storedImage;

然后你把你 2 的视图控制器之前,您设置 storedImage:

// inside your First View Controller .m file
-(void)showSecondVC
{
    SecondVC *secondVC = [[SecondVC alloc] init];
    secondVC.storedImage = self.downloadedImage;

    [self.navigationController pushViewController:secondVC animated:YES];
}

附加信息

缓存机制,已经有两个伟大的图书馆,已经规定︰

我个人比较喜欢 SDWebImage:D

你有一个库导入到项目后,它通常是代码的 1 系这样:

[myImageView setImageWithURL:imageURL placeholderImage:nil options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {

    // do something here in the completion callback block
    [self showSecondVC];
}];

那些两个库将缓存图像,如果它检测到相同的 URL 地址正在使用,所以如果你给它的 URL:

http://www.imageserver.com/someImage.png

第一次,它下载并缓存该图像在该地址。第二次给它传递相同的 URL 地址再次它从缓存中将之据为己有,而不是从服务器下载。

SDWebImage 具有更多的花哨选项下载图像使用下载管理器而不需要使用 UIImageView,如果你需要它,但这通常是为更复杂的场景,上述方法就够了大部分的时间。

赞助商