Tôi đang nhận được hình ảnh từ người dùng từ thư viện ảnh và tôi muốn chuyển hình ảnh đó đến một chế độ xem khác ...Chuyển hình ảnh từ một chế độ xem sang một chế độ xem khác
Tôi đã đọc rằng tôi sẽ có thể chỉ đơn giản là làm một cái gì đó như thế này:
secView.imgView.image = selectedImage.image;
Thiết UIImageView tôi trên quan điểm thứ hai là hình ảnh từ UIImageView tôi ... Nhưng UIImageView trong giao diện thứ hai chỉ là trống rỗng ...
My mã này là ...
.210ViewController.h:
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
UIImagePickerController *picker;
IBOutlet UIImageView *selectedImage;
SecondView *secondView;
}
@property (nonatomic, retain) UIImageView *selectedImage;
@property (nonatomic, retain) SecondView *secondView;
-(IBAction)sendImage:(id)sender;
-(IBAction)openGallery:(id)sender;
@end
ViewController.m (chỉ những phần liên quan)
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.imgView.image = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
-(IBAction)openGallery:(id)sender
{
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *) Picker
{
[Picker dismissModalViewControllerAnimated:YES];
}
- (void)imagePickerController:(UIImagePickerController *) Picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Save the image
selectedImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
[Picker dismissModalViewControllerAnimated:YES];
}
Trong bài khác tôi đọc rằng cách tiếp cận khác là để làm điều này:
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
[secView setImage:selectedImage.image];
}
[self.navigationController pushViewController:secondView animated:YES];
}
và sau đó trong secondview.h
-(void)setImage:(UIImage *)image;
và .m
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
Nhưng cả hai cách tiếp cận kết quả trong một UIImageView trống ... Vì vậy, cách tiếp cận đúng để làm điều này là gì?
Cảm ơn trước!
EDIT
SecondView là khá đơn giản vào lúc này ... (trong mã posted tôi cố gắng và làm theo phương pháp hai)
@interface SecondView : UIViewController
{
UIImageView *imgView;
}
@property (nonatomic, retain) IBOutlet UIImageView *imgView;
-(void)setImage:(UIImage *)image;
@end
@implementation SecondView
@synthesize imgView;
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
SOLUTION Được rồi ... Đi lại cho phương pháp đầu tiên và thực hiện một số thay đổi mà cuối cùng đã làm việc ...
-(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];
}
Và trong chế độ xem thứ hai, tôi đã tạo UIImage * theImage - sau đó tôi đặt [imgView setImage: theImage]; trong viewDidLoad, mà làm việc ...
xin vui lòng đặt mã của lớp SecondView – Ganzolo
Nó được thêm giờ :) Nhưng tôi đã cho thấy việc bổ sung duy nhất trong mã ngoài tiêu chuẩn ... (xin lưu ý, các secondView gửi được nơi tôi thử phương pháp thứ hai được đề cập ...) – user969043
Cảm ơn bạn! Việc chuyển UIImage và UIImageView từ trình điều khiển chế độ xem gốc sang secondViewController cũng làm việc cho tôi. Có lẽ vì UIImageView trên secondVC là một IBOutlet nó sẽ không hoạt động. – LevinsonTechnologies