Ios 如何将UI图像从一个视图控制器传递到另一个视图控制器?

Ios 如何将UI图像从一个视图控制器传递到另一个视图控制器?,ios,swift,Ios,Swift,我需要将一个图像从一个视图控制器传递到另一个视图控制器。我让用户NSuserdefault将图像变量声明为全局变量,但由于未捕获的异常“NSInvalidArgumentException”,它显示此错误,原因是:“尝试插入非属性列表对象。” func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!)

我需要将一个图像从一个视图控制器传递到另一个视图控制器。我让用户NSuserdefault将图像变量声明为全局变量,但由于未捕获的异常“NSInvalidArgumentException”,它显示此错误,原因是:“尝试插入非属性列表对象。”
 func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})  
imageview.image = image
NSUserDefaults.standardUserDefaults().setObject(image, forKey:"image")
NSUserDefaults.standardUserDefaults().synchronize()
}

你是什么意思?是否将UIImage的变量传递给另一个viewController?你提供的信息太少了


可能您想查看此链接。

只需创建NSString*imageName的属性,并在推送/显示viewcontroller之前进行设置,然后在其他viewcontroller中读取此属性即可创建UIImage。

您不能将图像直接保存到用户默认设置中,您可以将图像压缩为png/jpeg数据,您可以将数据保存到userDefault中。使用方法

NSData *UIImagePNGRepresentation(UIImage *image);

当您读取userDefaults时,您可以先读取数据,然后使用方法将数据转换为图像

NSData *UIImagePNGRepresentation(UIImage *image);
UIImage imageWithData:或swift样式UIImage(数据:)


通常情况下,我们不执行上述操作,我们将图像保存到文件,并将文件路径保存到userDefault中,以使用NSUSerdefaults存储图像:

var testimage = UIImage(named: "testimage.png");
NSUserDefaults.standardUserDefaults().setObject(UIImagePNGRepresentation(testimage), forKey:"image")
}
要在另一个类中检索它,请执行以下操作:

var imagedata: NSData = NSUserDefaults.standardUserDefaults().dataForKey("image")!
        imageview.image = UIImage (data: imagedata)

如果您想传递一个本地可用的图像,然后将图像的名称作为字符串传递给另一个VC,则可以按名称获取图像。如果要从服务器加载图像,请将相应的url传递给另一个VC,这里有“从imageview加载图像”。如果您想传递图像本身,则将其作为NSData传递给另一个VC。对于在两个VC之间传递数据,请参阅此处我想将图像本身传递给另一个VC。您可以使用NSData清楚地解释它吗?这是一个简单的赋值,在sevondVC中创建一个NSData类型的变量,以NSData格式获取第一个VC的图像在转到第二个VC之前将其分配给第二个VC的NSData变量。请参考我共享的url,找到“secondVC.passedString=”“”一行。谢谢,我会再试一次。谢谢,我得到了所有解决方案