Iphone 故事板在视图之间传递图像

Iphone 故事板在视图之间传递图像,iphone,ios,objective-c,ios6,uiimageview,Iphone,Ios,Objective C,Ios6,Uiimageview,我正在尝试将图像从一个视图传递到另一个视图。我有一个摄像头按钮,当按下按钮时,会触发uiimagepickercontroller。选择图像后,会将编辑照片屏幕推到屏幕上。当屏幕加载时,不会显示任何内容。我试着跟随这篇文章,但似乎不起作用 以下是我的第一个视图控制器代码: firstViewController.h @interface firstViewController : UITableViewController<UIImagePickerControllerDelegate,

我正在尝试将图像从一个视图传递到另一个视图。我有一个摄像头按钮,当按下按钮时,会触发uiimagepickercontroller。选择图像后,会将编辑照片屏幕推到屏幕上。当屏幕加载时,不会显示任何内容。我试着跟随这篇文章,但似乎不起作用

以下是我的第一个视图控制器代码:

firstViewController.h

@interface firstViewController : UITableViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate>

- (IBAction)cameraButtonPressed:(id)sender;
@interface ECDEditViewController : UITableViewController <UIImagePickerControllerDelegate>

- (id)initWithImage:(UIImage *)aImage;

@property (strong, nonatomic) IBOutlet UIImageView *myImage;
@property (nonatomic, strong) UIImage *image;

secondViewController.m

@implementation ECDEditViewController
@synthesize myImage;
@synthesize image;


- (id)initWithImage:(UIImage *)aImage {

    self = [super init];
    if (self) {
        if (!aImage) {
            NSLog(@"sorry no picture loaded®");
            return nil;
        }
        self.image = aImage;
        [myImage setImage:aImage];
        NSLog(@"picture loaded");
   }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"im trying");

    [myImage setImage:image];
    [myImage setContentMode:UIViewContentModeScaleAspectFit];
}
secondViewController.h

@interface firstViewController : UITableViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate>

- (IBAction)cameraButtonPressed:(id)sender;
@interface ECDEditViewController : UITableViewController <UIImagePickerControllerDelegate>

- (id)initWithImage:(UIImage *)aImage;

@property (strong, nonatomic) IBOutlet UIImageView *myImage;
@property (nonatomic, strong) UIImage *image;

secondViewController.m

@implementation ECDEditViewController
@synthesize myImage;
@synthesize image;


- (id)initWithImage:(UIImage *)aImage {

    self = [super init];
    if (self) {
        if (!aImage) {
            NSLog(@"sorry no picture loaded®");
            return nil;
        }
        self.image = aImage;
        [myImage setImage:aImage];
        NSLog(@"picture loaded");
   }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"im trying");

    [myImage setImage:image];
    [myImage setContentMode:UIViewContentModeScaleAspectFit];
}
@interface ECDEditViewController:UITableViewController
-(id)initWithImage:(UIImage*)目标;
@属性(强,非原子)IBUIImageView*myImage;
@属性(非原子,强)UIImage*image;
secondViewController.m
@ECDEditViewController的实现
@合成图像;
@合成图像;
-(id)initWithImage:(UIImage*)目标{
self=[super init];
如果(自我){
如果(!目标){
NSLog(@“抱歉,没有加载图片®”);
返回零;
}
自我形象=目标;
[myImage setImage:aImage];
NSLog(@“图片加载”);
}
回归自我;
}
-(无效)viewDidLoad
{
[超级视图下载];
NSLog(@“我正在尝试”);
[myImage setImage:image];
[myImage setContentMode:UIViewContentModeScaleAspectFit];
}

您需要执行以下操作:

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

[self dismissViewControllerAnimated:YES completion:^{ 

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 

ECDEditViewController *composeController = [self.storyboard instantiateViewControllerWithIdentifier:@"showCompose"]; 
composeController.image = image; 
[self.navigationController pushViewController:composeController animated:YES]; 

}]; 

}
您的ComposecController实际上是一个ECDEditViewController,而不是一个UINavigationController。因此,这一行是不必要的(initWithImage:method也是如此):


您需要这样做:

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

[self dismissViewControllerAnimated:YES completion:^{ 

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 

ECDEditViewController *composeController = [self.storyboard instantiateViewControllerWithIdentifier:@"showCompose"]; 
composeController.image = image; 
[self.navigationController pushViewController:composeController animated:YES]; 

}]; 

}
您的ComposecController实际上是一个ECDEditViewController,而不是一个UINavigationController。因此,这一行是不必要的(initWithImage:method也是如此):


如果“myImage”是UIImageView,请从-initWithImage:-您的视图未加载,因此无法与它对话,删除使用它的代码。逐步通过调试器,并查看它是否为零。您实例化的ECDEditViewController似乎从未出现过。而您似乎正在将一个导航控制器(“ComposecController”)推到另一个导航控制器上,这充其量是奇怪的,可能是错误的。什么是ComposecController?你不想把图像传给ECDEditViewController吗?@rdelmar那是我给它的情节提要ID你给了什么?你的问题不清楚。ECDEditViewController是UITableViewController子类,但您是说composeController是UINavigationController。这两件事是不同的吗?我的问题与视图控制器无关,它将图像从一个视图传递到另一个@rdelmarIf“myImage”是UIImageView,请从-initWithImage:-您的视图未加载,因此您无法与它对话。逐步通过调试器,并查看它是否为零。您实例化的ECDEditViewController似乎从未出现过。而您似乎正在将一个导航控制器(“ComposecController”)推到另一个导航控制器上,这充其量是奇怪的,可能是错误的。什么是ComposecController?你不想把图像传给ECDEditViewController吗?@rdelmar那是我给它的情节提要ID你给了什么?你的问题不清楚。ECDEditViewController是UITableViewController子类,但您是说composeController是UINavigationController。这两件事是不同的吗?我的问题与视图控制器无关,它将图像从一个视图传递到另一个@rdelmar