查看未在didFinishPickingMediaWithInfo中显示

时间:2014-12-23 15:24:16

标签: ios uiimagepickercontroller segue

更新

花了几个小时后,我找到了一个解决方案。一个问题是,在拾取图像后没有显示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];
}

我真的很绝望。 我想用UIImagePickerController选择一张照片,并希望在另一个视图中显示它。 尝试不同的方法后,我无法显示第二个视图,应该放置图像。

我的代码:

- (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时,屏幕会进入视图,在那里你可以看到相册..

我做错了什么? :/ 非常感谢

1 个答案:

答案 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