titus
titus

Reputation: 49

pass image from one view controller to another in swift

I try to use segue to pass a image from one view controller to another, but image is null and cannot be used.

here is the mainViewController.swift, all the logs show right value.

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

here is another view controller "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.
    }
}

So see the logs in this view controller, the var editImage are not initialized into a right value. Just new for IOS and thanks for help.

Upvotes: 0

Views: 2572

Answers (2)

Alvin George
Alvin George

Reputation: 14294

See mine. (I used uipickerview and delegate methods)

    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!

        }
    }

Upvotes: 0

titus
titus

Reputation: 49

I figure it out, the problem is not what I think, the image can be pass to another viewcontroller. the problem is due to deprecate API. "dismissModalViewControllerAnimated". more detail pls see this question. dismissModalViewControllerAnimated deprecated

Upvotes: 1

Related Questions