Reputation: 49
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
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
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