1

UIImagePickerController次のView Controllerで選択した画像を読み込もうとしています。私は同様のスレッドでいくつかの検索を行い、セットアップに役立ついくつかを見つけましたが、画像は実際には次のView Controllerに「転送」されません。

これは、didFinishPickingImage と prepareForSegue のコードです。

- (void)imagePickerController:(UIImagePickerController *)picker
                              didFinishPickingImage:(UIImage *)image 
                              editingInfo:(NSDictionary *)editingInfo
{
    self.imageChosen = image;
    [picker dismissModalViewControllerAnimated:NO];
    [self performSegueWithIdentifier:@"Edit" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"Edit"]){
    EditViewController *editViewController = 
                       (EditViewController *)segue.destinationViewController;
    editViewController.imageView.image = self.imageChosen;
}

にセグエを実行していますEditViewControllerが、そこのimageViewは画像をロードしません。どういうわけか割り当てが間違っていると思いますが、その方法がわかりません。

4

1 に答える 1

1

画像を設定しようとすると、まだロードされていEditViewController UIImageViewないため存在しません。EditViewControllerimage を設定する代わりに、イメージを保持UIImageViewするインスタンス変数を直接作成しますEditViewControllerUIImageViewそして、この画像をに割り当てるよりもviewDidLoad:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"Edit"]){
    EditViewController *editViewController = 
                   (EditViewController *)segue.destinationViewController;
    editViewController.image = self.imageChosen;
}

//EditViewController.h
...
@property (nonatomic, strong) UIImage *image;
...

//EditViewController.m
- (void)viewDidLoad {
    ...
    self.imageView.image = self.image;
    ...
}
于 2013-03-09T13:07:22.327 に答える