Ios 将UIImage传递给视图控制器

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(

因此,我有一个名为狗仔队的定制相机,从相机拍摄的图像存储在名为ImageSource的定制阵列中。现在我声明我将把ImageSource从camera view控制器传递到我的第二个view控制器,但我意识到我的图像在第二个view控制器上为零。我如何通过segue传递所有声明为ImageSource的照片中的图像。这是我的问题。这是我的密码

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回家。所以我会检查,如果它是正确的,我会标记它