更新
花了几个小时后,我找到了一个解决方案。一个问题是,在拾取图像后没有显示segue。
我还有一个问题,第二个视图的标签栏没有显示.. 但我可以看到图像NOOOW !!
但是,谢谢大家的帮助!!!!
这是我的代码:
// FirstView.m
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
self->takenImage = image;
[picker dismissModalViewControllerAnimated:NO];
double delayInSeconds = 0.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self performSegueWithIdentifier:@"ToSecondView" sender:self];
});
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"ToSecondView"]){
SecondView *editViewController =
(SecondView *)segue.destinationViewController;
//editViewController.imageView.image = self->takenImage;
[editViewController setMyImage:takenImage];
}
}
// SecondView.h
@property (nonatomic, strong) UIImage *myImage;
// viewDidLoad中的SecondView.m
self.imageView.image = _myImage;
更新: 为了更好地理解,我发布了我的其余代码:
的firstView :
@interface FirstView : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@end
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[picker dismissViewControllerAnimated:YES completion:^{
SecondView *svc = [[ShowPicture alloc] initWithNibName:@"SecondView" bundle:nil];
[svc setMyImage:image];
[self presentViewController:svc animated:YES completion:nil];
}];
}
** SecondView **:
@interface ShowPicture: UIViewController
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic, strong) UIImage *myImage;
-(void)viewDidLoad{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(85, 90, 150, 150)];
self.imageView.image = _myImage;
[[self view] addSubview: imageView];
}
我的代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[picker dismissViewControllerAnimated:YES completion:^{
SecondView *svc = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
svc.imageView.Image = image;
[self presentViewController:svc animated:YES completion:nil];
}];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"toSecondView"]){
ShowPicture *showPicture =
(ShowPicture *)segue.destinationViewController;
//showPicture.imageView.image = self.imageChosen;
SecondView Picture *cvc = [segue destinationViewController];
cvc.image = newImage;
}
}
当我点击选择Btn时,屏幕会进入视图,在那里你可以看到相册..
我做错了什么? :/ 非常感谢
答案 0 :(得分:1)
在这里:
ShowPicture *svc = [[ShowPicture alloc] initWithNibName:@"ShowPicture" bundle:nil];
svc.imageView.Image = image;
svc.imageView
对象尚未创建。
对于解决方案,您可以将属性定义为ShowPicture
:
@property (nonatomic, strong) UIImage *myImage;
并将您的选择委托功能更改为:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[picker dismissViewControllerAnimated:YES completion:^{
ShowPicture *svc = [[ShowPicture alloc] initWithNibName:@"ShowPicture" bundle:nil];
[svc setMyImage:image];
[self presentViewController:svc animated:YES completion:nil];
}];
}
最后是viewDidLoad
ShowPicture
的{{1}}方法:
ViewController