在segue上移动图像以加载到另一个UIImageView中

时间:2014-07-09 18:36:45

标签: ios xcode uiview uiimageview screenshot

我目前正在为iOS构建应用程序。我正在尝试保存用户当前正在查看的内容,以便我可以将其加载到下一个视图中。我知道如何通过

保存图像
 CGSize size = [self.tableView bounds].size;
        UIGraphicsBeginImageContext(size);
        [[self.tableView layer] renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

但是我不知道如何将它们移动到下一个视图控制器。出于某种原因,上面拒绝在下一个视图控制器的图像视图中加载它。

解决

_incommingImage是一个图像视图。

我这样保存。

 NSData *imageData = UIImageJPEGRepresentation(newImage, 1.0);
        NSArray *pathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                               NSUserDomainMask,
                                                               YES);
        NSString *path = [[pathArr objectAtIndex:0]
                          stringByAppendingPathComponent:@"img.data" ];
[imageData writeToFile:path atomically:YES];

我加载它然后用它。

 NSArray *pathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                           NSUserDomainMask,
                                                           YES);
    NSString *path = [[pathArr objectAtIndex:0]
                      stringByAppendingPathComponent:@"img.data" ];
    NSData *retrievedData = [NSData dataWithContentsOfFile:path];
    _incommingImage.image = [UIImage imageWithData:retrievedData];
       [_incommingImage release];

2 个答案:

答案 0 :(得分:1)

我同意罗伯特的观点。

FirstViewController.m:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"Your_Identifier"]) {
        SecondViewController *secondVC = segue.destinationViewController;
        secondVC.incommingImage = myImage;
    }
}

SecondViewController.h:

@property (strong, nonatomic) UIImage *incommingImage;

一旦出现SecondViewController,图像将自动设置为incommingImage。确保在故事板上设置segue的标识符以匹配prepareForSegue下的标识符。

答案 1 :(得分:0)

我在photoApp项目中做了类似的事情,我有一个显示图像的视图。

1.lets继续在我们的nextView中设置UIImage属性。

NextView.h

@interface
@property (nonatomic, strong) UIImage * image;
@end

2.设置属性中的图像。这实际上可以在segue上完成。从查看代码开始,我不确定segue是如何发生的,但这里是设置segue的代码,它也设置了背景图像。

NextView *nextView = [[NextView alloc]init];
nextView.image = 
//the image that you want. 
// I don't know how you are getting this image so 
//you may have to have other code now to get this image from its picker method. 

3.在下一个视图中,你也必须有一个UIImageView。 imageView将需要在后台,因此显示在其中的所有内容都可以是此UIImageView的子视图。

- (void)viewDidLoad
{

    [super viewDidLoad];
    UIimageView *imageView = [[UIImageView alloc]initWithImage:image];
    imageView.userInteractionEnabled=YES
    //if you need to add say a button on the view
    //your going to have to configure the button's dimensions this is a template. 
    UIButton *buttonView = [UIButton alloc]initWithFramce:CGRectMake(X,Y,Width,Height)];
    [imageView addSubview:buttonView];

}

编辑:如果您正在使用故事板,请告诉我,在这种情况下,我可以调整此代码,以便使用Storyboard实现更平滑的过渡。