如何将uiimage传递给另一个视图控制器?

时间:2012-11-25 12:24:30

标签: objective-c cocoa-touch uiviewcontroller uiimage uiimagepickercontroller

如何将MainViewController中uiimage中选择的uiimagepickercontroller传递给SecondViewController?它确实推送到SecondViewController,但是uiimage是空的。

我在网上搜索过,尝试使用这些解决方案,但仍然无法正常使用。

photoImage是我在SecondViewController中声明的uiimageview

- (void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   [picker dismissModalViewControllerAnimated:YES];

    SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [secondVC.photoImage setImage:[info objectForKey:@"UIImagePickerControllerEditedImage"]];
    [self.navigationController pushViewController:secondVC animated:YES];
    [secondVC release];
}

2 个答案:

答案 0 :(得分:0)

创建一个共享类,用于存储图像,并在任何地方访问它。

在MainViewController中,在该共享类'ivar中分配该图像,并在SecondViewController中访问它。

编辑:

下面的代码显示了如何实现共享类,这可能在语法上不正确,因为目前我没有使用mac,所以我不能编译。

@interface SomeManager : NSObject
    +(id)myImage;
@end

@implementation SomeManager
    +(id)myImage{    
        static id myImage= nil; 
        @synchronized([self class]){ 
            if (myImage== nil) { 
                myImage= //put your image here; 
            } 
        }
        return myImage;
    }
 @end

答案 1 :(得分:0)

在调用该控制器的UIImageView方法之前,第二个视图控制器中的viewDidLoad不存在。将属性放入包含SecondViewController的{​​{1}}中,在按下视图控制器时存储对要在其中使用的图像的引用(而不是尝试设置图像视图),然后移动你的UIImage调用第二个视图控制器的`viewDidLoad``。