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

时间:2015-01-09 07:09:31

标签: ios swift

我需要将图像从一个视图控制器传递到另一个视图控制器我有用户NSuserdefault将图像变量声明为全局但由于未捕获的异常而显示此错误应用程序' NSInvalidArgumentException',原因:&#39 ;尝试插入非属性列表对象

 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()
}

4 个答案:

答案 0 :(得分:0)

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

也许您想查看此链接Using Delegation to Communicate With Other View Controllers

答案 1 :(得分:0)

只需创建NSString * imageName的属性并在推送/呈现视图控制器之前设置它,在您的其他视图控制器中,您可以读取此属性以创建UIImage。

答案 2 :(得分:0)

您无法将图像直接保存到UserDefaults中,您可以将图像压缩为png / jpeg数据,也可以将数据保存到userDefault中。使用方法

NSData *UIImagePNGRepresentation(UIImage *image);

if imageData {
    NSUserDefaults.standardUserDefaults().setObject(imageData, forKey:"image")
    NSUserDefaults.standardUserDefaults().synchronize()
}

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

UIImage-imageWithData:或swift style UIImage(data:)

一般来说,我们不像上面那样,我们将图像保存到文件,并将文件的路径保存到userDefault

答案 3 :(得分:0)

使用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)