快速将图像从一个视图控制器传递到另一个视图控制器

Posted

技术标签:

【中文标题】快速将图像从一个视图控制器传递到另一个视图控制器【英文标题】:pass image from one view controller to another in swift 【发布时间】:2014-06-24 08:03:06 【问题描述】:

我尝试使用 segue 将图像从一个视图控制器传递到另一个,但图像为空且无法使用。

这里是mainViewController.swift,所有日志都显示正确的值。

func imagePickerController(picker:UIImagePickerController!,didFinishPickingMediaWithInfo info: NSDictionary!)
    var i:UIImage = info.objectForKey(UIImagePickerControllerOriginalImage) as UIImage
    NSLog("%f, %f", i.size.width, i.size.height);

    orignal = i
    NSLog("iamge %@", orignal)
    performSegueWithIdentifier("showPhoto", sender: self)
    dismissModalViewControllerAnimated(false)


override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
    var imageEditcontroller:ImageEditViewController = segue.destinationViewController as ImageEditViewController

    imageEditcontroller.editImage = orignal
    NSLog("iamge %@", imageEditcontroller.editImage)

这是另一个视图控制器“ImageEditViewController.swift”

import UIKit

class ImageEditViewController: UIViewController 

    @IBOutlet var imagEditView : UIImageView

    var editImage:UIImage=UIImage()

    @IBAction func doDecorateBtn(sender : AnyObject) 
        print("here text chage5")
    

    @IBAction func doEmailBtn(sender : AnyObject) 
        print("here text chage6")        
    

    init(coder aDecoder: NSCoder!) 
        super.init(coder: aDecoder)
        NSLog("iamge2 %@", editImage)            
    

    override func viewWillAppear(animated: Bool) 
        super.viewWillAppear(animated)
        NSLog("iamge1 %@", editImage)
    

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the vie
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

所以查看这个视图控制器中的日志,var editImage 没有初始化为正确的值。 ios 新手,感谢您的帮助。

【问题讨论】:

【参考方案1】:

我想通了,问题不是我想的那样,图像可以传递给另一个视图控制器。问题是由于弃用 API。 “dismissModalViewControllerAnimated”。更多细节请看这个问题。 dismissModalViewControllerAnimated deprecated

【讨论】:

【参考方案2】:

看我的。 (我使用了 uipickerview 和委托方法)

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) 

 let pickedimage = info[UIImagePickerControllerOriginalImage] as! UIImage

imageView.image = pickedimage

            if (imageView.image != nil)
            
                print("image not empty")
picker .dismissViewControllerAnimated(false, completion: nil)

self .performSegueWithIdentifier("seguetoscoutuploadpage", sender: self)
            
            else
            
                print("IMAGE VIEW NIL")
            
        



    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 

        if (segue.identifier == "seguetoscoutuploadpage") 

let scout =  segue.destinationViewController as! ScoutImageUpload
     scout.newImage = imageView.image!

        
    

【讨论】:

以上是关于快速将图像从一个视图控制器传递到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

将 ImageData 从一个视图控制器传递到另一个视图控制器

当数据从一个视图控制器传递到另一个视图控制器时,我如何能够传递图像?

将数据从一个视图控制器传递到另一个(图像)

通过preparesegue将图像从一个视图传递到另一个视图?

将图像从一个视图控制器传递到另一个控制器给出nil

将数据从带有页面控制器的 uiscrollview 传递到另一个视图控制器 [关闭]