如何将图像从图像选择器传递到另一个视图
how to pass an image from image picker to another view
似乎有点老了,但我无法解决这个问题....现在已经忙于这个很长一段时间了,我找不到一个可行的例子来解决这个问题,所以如果有人能提供帮助,我将不胜感激,我只是想使用图像选择器将图像从视图控制器传递到另一个视图,我有 2 个视图控制器:viewcontroller 和第二个视图,我将视图控制器 h 文件的代码放在这里:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
UIImagePickerController *picker;
IBOutlet UIImageView *selectedImage;
SecondView *imageView;
}
@property (nonatomic, retain) UIImageView *selectedImage;
@property (nonatomic, retain) SecondView *secondView;
-(IBAction)sendImage:(id)sender;
-(IBAction)openGallery:(id)sender;
@end
这里是视图控制器的 m 文件:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize selectedImage;
@synthesize secondView;
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)secondView:(id)sender { if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.theImage = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.theImage = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
objectForKey:UIImagePickerControllerOriginalImage];
-(IBAction)openGallery:(id)sender
{
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *) Picker
{
[self dismissViewControllerAnimated:YES completion:nil];
[Picker dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *) Picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
selectedImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.navigationController pushViewController:secondView animated:YES];
[Picker dismissViewControllerAnimated:YES completion:nil];
}
@end
这里是secondview的h文件:
#import <UIKit/UIKit.h>
@interface SecondView : UIViewController
{
UIImageView *imgView;
UIImage *theImage;
}
@property (nonatomic, retain) IBOutlet UIImageView *imgView;
@property (nonatomic, retain) UIImage *theImage;
-(void)setImage:(UIImage *)image;
@property (nonatomic, readwrite) IBOutlet UIImageView *imageView;
@end
这里是secondview的m文件:
#import "SecondView.h"
@interface SecondView ()
@end
@implementation SecondView : UIViewController
@synthesize imgView;
@synthesize theImage;
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[_imageView setImage:theImage];
}
- (void)loadView {
self.title = @"Photo";
_imageView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.backgroundColor = [UIColor blackColor];
self.view = self.imageView;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[_imageView setImage:theImage];
}
@end
我只是在第二次查看时一直出现空白屏幕....非常感谢任何帮助....提前致谢....
如果按钮在第二个 viewcontroller 上附加了 segue,请使用此代码。
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SecondView *secView = segue.destinationViewController;
self.secondView = secView;
secView.theImage = selectedImage.image;
}
您可以在其他 view controller
上拍摄新的 UIImageView
并使用 prepareForSegue
方法传递此图像。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"editphoto"])
{
YourNextViewController*editImageView=segue.destinationViewController;
UIImage*clickedImage=capturedPicImageView.image;
editImageView.passedImage=clickedImage;
}
}
然后在 YourNextViewController
中创建 UIImage*clickedImage
并给它 属性。 不要忘记在 viewDidLoad
中分配。希望这会有所帮助。
似乎有点老了,但我无法解决这个问题....现在已经忙于这个很长一段时间了,我找不到一个可行的例子来解决这个问题,所以如果有人能提供帮助,我将不胜感激,我只是想使用图像选择器将图像从视图控制器传递到另一个视图,我有 2 个视图控制器:viewcontroller 和第二个视图,我将视图控制器 h 文件的代码放在这里:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
UIImagePickerController *picker;
IBOutlet UIImageView *selectedImage;
SecondView *imageView;
}
@property (nonatomic, retain) UIImageView *selectedImage;
@property (nonatomic, retain) SecondView *secondView;
-(IBAction)sendImage:(id)sender;
-(IBAction)openGallery:(id)sender;
@end
这里是视图控制器的 m 文件:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize selectedImage;
@synthesize secondView;
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)secondView:(id)sender { if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.theImage = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.theImage = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
objectForKey:UIImagePickerControllerOriginalImage];
-(IBAction)openGallery:(id)sender
{
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *) Picker
{
[self dismissViewControllerAnimated:YES completion:nil];
[Picker dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *) Picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
selectedImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.navigationController pushViewController:secondView animated:YES];
[Picker dismissViewControllerAnimated:YES completion:nil];
}
@end
这里是secondview的h文件:
#import <UIKit/UIKit.h>
@interface SecondView : UIViewController
{
UIImageView *imgView;
UIImage *theImage;
}
@property (nonatomic, retain) IBOutlet UIImageView *imgView;
@property (nonatomic, retain) UIImage *theImage;
-(void)setImage:(UIImage *)image;
@property (nonatomic, readwrite) IBOutlet UIImageView *imageView;
@end
这里是secondview的m文件:
#import "SecondView.h"
@interface SecondView ()
@end
@implementation SecondView : UIViewController
@synthesize imgView;
@synthesize theImage;
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[_imageView setImage:theImage];
}
- (void)loadView {
self.title = @"Photo";
_imageView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.backgroundColor = [UIColor blackColor];
self.view = self.imageView;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[_imageView setImage:theImage];
}
@end
我只是在第二次查看时一直出现空白屏幕....非常感谢任何帮助....提前致谢....
如果按钮在第二个 viewcontroller 上附加了 segue,请使用此代码。
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SecondView *secView = segue.destinationViewController;
self.secondView = secView;
secView.theImage = selectedImage.image;
}
您可以在其他 view controller
上拍摄新的 UIImageView
并使用 prepareForSegue
方法传递此图像。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"editphoto"])
{
YourNextViewController*editImageView=segue.destinationViewController;
UIImage*clickedImage=capturedPicImageView.image;
editImageView.passedImage=clickedImage;
}
}
然后在 YourNextViewController
中创建 UIImage*clickedImage
并给它 属性。 不要忘记在 viewDidLoad
中分配。希望这会有所帮助。