Ios 将UIImage传递给视图控制器
因此,我有一个名为狗仔队的定制相机,从相机拍摄的图像存储在名为ImageSource的定制阵列中。现在我声明我将把ImageSource从camera view控制器传递到我的第二个view控制器,但我意识到我的图像在第二个view控制器上为零。我如何通过segue传递所有声明为ImageSource的照片中的图像。这是我的问题。这是我的密码Ios 将UIImage传递给视图控制器,ios,iphone,swift,xcode,swift3,Ios,Iphone,Swift,Xcode,Swift3,因此,我有一个名为狗仔队的定制相机,从相机拍摄的图像存储在名为ImageSource的定制阵列中。现在我声明我将把ImageSource从camera view控制器传递到我的第二个view控制器,但我意识到我的图像在第二个view控制器上为零。我如何通过segue传递所有声明为ImageSource的照片中的图像。这是我的问题。这是我的密码 private var photos = [ImageSource]() @IBAction private func showMediaPicker(
private var photos = [ImageSource]()
@IBAction private func showMediaPicker() {
var theme = PaparazzoUITheme()
theme.shutterButtonColor = UIColor.blue.cgColor
let assemblyFactory = Paparazzo.AssemblyFactory(theme: theme)
let assembly = assemblyFactory.mediaPickerAssembly()
let mediaPickerController = assembly.module(
items: [],
selectedItem: nil,
maxItemsCount: 20,
cropEnabled: true,
cropCanvasSize: CGSize(width: 1280, height: 960),
configuration: { [weak self] module in
weak var module = module
module?.setContinueButtonTitle("Done")
module?.onFinish = { mediaPickerItems in
// storing picked photos in instance var and updating UI
self?.photos = mediaPickerItems.map { $0.image }
self?.updateUI()
self?.performSegue(withIdentifier: "ShowNow", sender: self?.photos)
}
module?.onCancel = {
module?.dismissModule()
}
}
)
navigationController?.pushViewController(mediaPickerController, animated: true)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "ShowNow") {
if let pivc: view2ViewController? = segue.destination as? view2ViewController,
let images = sender as? [UIImage] {
pivc?.image2 = images
}
}
}
您只需将UIImage传递给[NSUserDefault standardUserDefault]设置对象中保存图像:图像值forkey:@“img”]并通过[NSUserDefault standardUserDefault]值forkey:@“img”]获取,也可以通过生成UIImage的全局变量来传递,并传递给另一个viewcontroller 使用以下代码保存PNG的图像:
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) forKey:@"img"];
使用以下代码保存JPEG格式的图像:
[[NSUserDefaults standardUserDefaults] UIImageJPEGRepresentation(image) forKey:@"img"];
然后用这个代码把它取回来
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"img"]; UIImage* image = [UIImage imageWithData:imageData];
您只需将UIImage传递给[NSUserDefault standardUserDefault]设置对象中保存图像:图像值forkey:@“img”]并通过[NSUserDefault standardUserDefault]值forkey:@“img”]获取,也可以通过生成UIImage的全局变量来传递,并传递给另一个viewcontroller 使用以下代码保存PNG的图像:
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) forKey:@"img"];
使用以下代码保存JPEG格式的图像:
[[NSUserDefaults standardUserDefaults] UIImageJPEGRepresentation(image) forKey:@"img"];
然后用这个代码把它取回来
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"img"]; UIImage* image = [UIImage imageWithData:imageData];
您的第一个ViewController具有一个包含ImageSource的数组。 目标ViewController应该具有类似的数组(例如:
var passedPhotos:[ImageSource]?
)
第一个VC中的prepare(对于segue:UIStoryboardSegue,sender:Any)
方法应该如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "YourSegueIdentifier") {
if let secondVC: YourSecondViewController? = segue.destination as? YourSecondViewController,
if let photosToPass = photos {
secondVC?.passedPhotos = photosToPass
}
}
}
}
您的第一个ViewController具有一个包含ImageSource的数组。 目标ViewController应该具有类似的数组(例如:
var passedPhotos:[ImageSource]?
)
第一个VC中的prepare(对于segue:UIStoryboardSegue,sender:Any)
方法应该如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "YourSegueIdentifier") {
if let secondVC: YourSecondViewController? = segue.destination as? YourSecondViewController,
if let photosToPass = photos {
secondVC?.passedPhotos = photosToPass
}
}
}
}
首先在secondVC中创建一个数组
var arrImages = Array()
然后在你的电脑里做这件事
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "ShowNow") {
let pivc: view2ViewController? = segue.destination as? view2ViewController
pivc?.arrImages = images
// here images is the array of images
}
}
首先在secondVC中创建一个数组
var arrImages = Array()
然后在你的电脑里做这件事
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "ShowNow") {
let pivc: view2ViewController? = segue.destination as? view2ViewController
pivc?.arrImages = images
// here images is the array of images
}
}
替换let images=sender as?[UIImage]{pivc?.image2=images}由pivc?.image2=photosplace-let-images=sender-as?[UIImage]{pivc?.image2=images}by pivc?.image2=photos照片呢。我正在从imagesource访问图像。从相机拍摄的所有图像都自动存储在ImageSource中。您说您正在将图像存储在自定义阵列ImageSource中。因此,您可以从那里获取图像,然后可以传递到下一个VC。我遇到此错误“无法将类型为'ImageSource.PHAssetImageSource'(0x10c3d87c8)的值强制转换为'UIImage'(0x10e8100b0)。”我以“LIHSlider(images:arrImages![UIImage])”的身份访问了arrImages中的图像,那么照片呢。我正在从imagesource访问图像。从相机拍摄的所有图像都自动存储在ImageSource中。您说您正在将图像存储在自定义阵列ImageSource中。因此,您可以从那里获取图像,然后可以传递到下一个VC。我遇到此错误“无法将类型为'ImageSource.PHAssetImageSource'(0x10c3d87c8)的值强制转换为'UIImage'(0x10e8100b0)。”我以“LIHSlider(images:arrImages![UIImage])的身份访问了arrImages中的图像。你能给我举个例子吗?我没有听你的话。使用此代码保存图像[[NSUserDefaults standardUserDefaults]setObject:UIImagePNGRepresentation(image)forKey:@“img”];并使用以下代码NSData*imageData=[[NSUserDefaults standardUserDefaults]objectForKey:@“img”];UIImage*image=[UIImage imageWithData:imageData];请你把它写在代码里,这样我就能看清楚了。谢谢你,我会试试看,告诉你我现在在工作,12:30回家。因此,我会检查,如果它是正确的,我会标记它。你能给我一个例子吗?我没有听你的话。使用此代码保存图像[[NSUserDefaults standardUserDefaults]setObject:UIImagePngPresentation(image)forKey:@“img”];并使用以下代码NSData*imageData=[[NSUserDefaults standardUserDefaults]objectForKey:@“img”];UIImage*image=[UIImage imageWithData:imageData];请你把它写在代码里,这样我就能看清楚了。谢谢你,我会试试看,告诉你我现在在工作,12:30回家。所以我会检查,如果它是正确的,我会标记它