2015-12-08 19 views
0

我已经添加了相机&照片库到我的应用程序,但我想要做的是当有人选择相机,拍摄照片并选择它时,我希望它将用户导向到新的viewcontroller并显示那里的图像,而不是在按钮所在的当前视图上?如何从UIImagePickerController将图像导入到新的VC? Swift

到目前为止,从谷歌上爬起来,我设法得到新的视图加载时,相机或图书馆被解雇,但现在我似乎无法弄清楚如何导入照片太新视图呢?!

如果任何人都可以提供帮助,那就太好了。

继承人下面我当前的代码:

override func viewDidLoad() { 
     super.viewDidLoad() 



     // Do any additional setup after loading the view. 
    } 

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









    @IBAction func Camera(sender: AnyObject) { 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.Camera; 
     imagePicker.allowsEditing = false 
     self.presentViewController(imagePicker, animated: true, completion: nil) 
     } 



    } 



    @IBAction func Images(sender: AnyObject) { 

     let image = UIImagePickerController() 
     image.delegate = self 
     image.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 
     image.allowsEditing = false 


     self.presentViewController(image, animated: true, completion: nil) 



    } 



    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

     self.dismissViewControllerAnimated(true, completion: nil) 
     let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
     self.presentViewController(svc, animated: true, completion: nil) 


    } 



















} 

回答

0

,你想将图像设置为图像视图,当你应该试图将图像设置为图像视图的图像时,它应该是:

func viewDidLoad(){ super.viewDidLoad()

// Because the self.image is an optional var, you need to unwrap it 
if let image = self.image { 
    self.imageView.image = self.image 
} 

}

+0

太棒了,完美工作 – Charles

0

添加一个可选的属性,以基于上述回答您的视图控制器

class ImageViewController: UIViewController { 

    var image : UIImage? = nil 

} 


func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

     self.dismissViewControllerAnimated(true, completion: nil) 
     let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
     svc.image = image // here 
     self.presentViewController(svc, animated: true, completion: nil) 

    } 
+0

嗨,感谢您的回答。那个MyViewController类...对应于我的ImageViewController吗? – Charles

+0

当然,我更新了答案 –

+0

并且我是否将该类位放在与上面显示的代码相同的文件中,还是放在第二个代码中? – Charles

0

在你ImageViewController,或其它接收的ViewController,添加:

var selectedImage: UIImage? = nil 

didFinishPickingImage,这种替换代码:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
    let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
    svc.selectedImage = image 
    self.presentViewController(svc, animated: true, completion: nil) 
} 

在接收的ViewController svc指的是,添加一个方法来显示th e图像:

class ImageViewController: UIViewController { 

    var selectedImage: UIImage? = nil 

    var yourImageView = UIImageView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     ... 
     yourImageView.frame = view.frame 
     yourImageView.image = selectedImage 
    } 
    ... 
} 
0

我想提出一些修改建议。

请看看这个答案:Presenting a modal view controller immediately after dismissing another

func presentImageViewerWithImage(image: UIImage) { 

    let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
    svc.image = image //Need to make an UIImage instance variable in new viewController 
    self.presentViewController(svc, animated: true, completion: nil) 
} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

    self.dismissViewControllerAnimated(false, completion: { 
     self.presentImageViewerWithImage(image) 
    }) 
} 

然后在新的浏览器做一个UIImageViewIBOutlet,并显示所选择的图像格式选择器是“ImageView的”

@IBOutlet weak var aImageView: UIImageView! 

var image : UIImage? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let image = image { 
     self.aImageView.image = image 
    } 
} 
+0

演示项目uploded https://github.com/rishi420/TestImagePicker –

相关问题