Ios 将UIImage从一个Viewcontroller传递到另一个Viewcontroller会得到零

Ios 将UIImage从一个Viewcontroller传递到另一个Viewcontroller会得到零,ios,objective-c,uiimagepickercontroller,viewcontroller,Ios,Objective C,Uiimagepickercontroller,Viewcontroller,我试图用传递NSString的相同方式将UIImage从一个Viewcontroller传递到另一个Viewcontroller,但如果是image,它在第二个控制器中会获得nil值。我使用imagepickercontroller在第一个控制器中从gallery中选择image。 这是InfoViewcontroller.h- #import <UIKit/UIKit.h> @interface InfoViewController : UIViewController @pr

我试图用传递NSString的相同方式将UIImage从一个Viewcontroller传递到另一个Viewcontroller,但如果是image,它在第二个控制器中会获得nil值。我使用imagepickercontroller在第一个控制器中从gallery中选择image。 这是InfoViewcontroller.h-

#import <UIKit/UIKit.h>

@interface InfoViewController : UIViewController

@property(strong,nonatomic) UIImagePickerController *imagepicker;
@property(strong,nonatomic) UIImage *image1;

@end
#import <UIKit/UIKit.h>

@interface ThirdViewController : UIViewController
@property (strong, nonatomic)  IBOutlet UIImageView *imgview2;
@property (strong,nonatomic) UIImage *image2;
@end
这是第三台遥控器-

#import <UIKit/UIKit.h>

@interface InfoViewController : UIViewController

@property(strong,nonatomic) UIImagePickerController *imagepicker;
@property(strong,nonatomic) UIImage *image1;

@end
#import <UIKit/UIKit.h>

@interface ThirdViewController : UIViewController
@property (strong, nonatomic)  IBOutlet UIImageView *imgview2;
@property (strong,nonatomic) UIImage *image2;
@end
为什么我拿不到?

在这里

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
image1=[[UIImage alloc]initWithData:data];
//[imgview1 setImage:image1];
[imagepicker dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"tocrop" sender:self];
}
您正在使用“ToCrop”执行segue,此处您正在检查toimage

if ([segue.identifier isEqualToString:@"toimage"]) 
我认为应该是
如果([segue.identifier isEqualToString:@“tocrop”])
并使用
self.image1=[[UIImage alloc]initWithData:data]

在这里

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
image1=[[UIImage alloc]initWithData:data];
//[imgview1 setImage:image1];
[imagepicker dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"tocrop" sender:self];
}
您正在使用“ToCrop”执行segue,此处您正在检查toimage

if ([segue.identifier isEqualToString:@"toimage"]) 
我认为应该是
如果([segue.identifier isEqualToString:@“tocrop”])
并使用
self.image1=[[UIImage alloc]initWithData:data]

在这里

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
image1=[[UIImage alloc]initWithData:data];
//[imgview1 setImage:image1];
[imagepicker dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"tocrop" sender:self];
}
您正在使用“ToCrop”执行segue,此处您正在检查toimage

if ([segue.identifier isEqualToString:@"toimage"]) 
我认为应该是
如果([segue.identifier isEqualToString:@“tocrop”])
并使用
self.image1=[[UIImage alloc]initWithData:data]

在这里

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
image1=[[UIImage alloc]initWithData:data];
//[imgview1 setImage:image1];
[imagepicker dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"tocrop" sender:self];
}
您正在使用“ToCrop”执行segue,此处您正在检查toimage

if ([segue.identifier isEqualToString:@"toimage"]) 

我认为应该是
如果([segue.identifier isEqualToString:@“tocrop”])
并使用
self.image1=[[UIImage alloc]initWithData:data]

1。确保image1在initWithData之后不是nil


2.检查ViewDidLoad是否在destViewController.image2=image1之前执行(有时会执行)1。确保image1在initWithData之后不为零


2.检查ViewDidLoad是否在destViewController.image2=image1之前执行(有时会执行)1。确保image1在initWithData之后不为零


2.检查ViewDidLoad是否在destViewController.image2=image1之前执行(有时会执行)1。确保image1在initWithData之后不为零


2.检查viewdiload是否在destViewController.image2=image1之前执行(有时会执行)

我的朋友,您的segue标识符不相同,prepare for segue中的If语句中的代码没有执行

试着这样做:

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
    image1=[[UIImage alloc]initWithData:data];
    //[imgview1 setImage:image1];
    [imagepicker dismissViewControllerAnimated:YES completion:nil];
    [self performSegueWithIdentifier:@"tocrop" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"tocrop"]) {

        ThirdViewController *destViewController = segue.destinationViewController;
        destViewController.image2 =image1;}
}

干杯

我的朋友,你的segue标识符不一样,prepare for segue中的if语句中的代码没有执行

试着这样做:

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
    image1=[[UIImage alloc]initWithData:data];
    //[imgview1 setImage:image1];
    [imagepicker dismissViewControllerAnimated:YES completion:nil];
    [self performSegueWithIdentifier:@"tocrop" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"tocrop"]) {

        ThirdViewController *destViewController = segue.destinationViewController;
        destViewController.image2 =image1;}
}

干杯

我的朋友,你的segue标识符不一样,prepare for segue中的if语句中的代码没有执行

试着这样做:

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
    image1=[[UIImage alloc]initWithData:data];
    //[imgview1 setImage:image1];
    [imagepicker dismissViewControllerAnimated:YES completion:nil];
    [self performSegueWithIdentifier:@"tocrop" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"tocrop"]) {

        ThirdViewController *destViewController = segue.destinationViewController;
        destViewController.image2 =image1;}
}

干杯

我的朋友,你的segue标识符不一样,prepare for segue中的if语句中的代码没有执行

试着这样做:

- (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSData *data=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1);
    image1=[[UIImage alloc]initWithData:data];
    //[imgview1 setImage:image1];
    [imagepicker dismissViewControllerAnimated:YES completion:nil];
    [self performSegueWithIdentifier:@"tocrop" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"tocrop"]) {

        ThirdViewController *destViewController = segue.destinationViewController;
        destViewController.image2 =image1;}
}

干杯

当您按下第二个控制器时,在从图像选择器选择图像后按下当您按下第二个控制器时,在从图像选择器选择图像后按下当您按下第二个控制器时,在从图像选取器中选择图像后按下当您按下第二个控制器时,在从图像选取器中选择图像后按下!!我是盲人--…谢谢你…不需要自我…我已经合成了DOMG!!我是盲人--…谢谢你…不需要自我…我已经合成了DOMG!!我是盲人--…谢谢你…不需要自我…我已经合成了DOMG!!我是瞎子--…谢谢你…不需要自我…我已经合成了