将imageView传递给下一个activity,是否需要outlet
passing the imageView to the next activity, does it require an outlet
我有一个小问题,每当我删除下图中显示的 Outlet (imageChosen)(带有黄色警告)时,应用程序会在图像应该通过时崩溃
我是这样定义的
var imageChosen: UIImageView!
我就是这样将从图库中选择的图像保存到 imageChosen
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
var chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = chosenImage
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图像传递给下一个的地方 activity
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
var pass:postView = segue.destinationViewController as! postView
pass.currentImage = imageChosen.image
}
}
当我删除图片中的插座时,应用程序崩溃,因为图像为零,即使代码似乎没问题,
谁能帮帮我
您还需要从 ViewController
(swift 文件)中删除插座,您在图片中看到插座的地方 post 单击 (x) 以从 imageChosen 中删除插座,因为它不再存在(您可以从代码中看到黄色三角形形式的警告)。
您还应该将代码更改为:
var imageChosen: UIImageView?
我就是这样将从图库中选择的图像保存到 imageChosen
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
if let image = info[UIImagePickerControllerOriginalImage] as UIImage{
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = image
}
else
{
//something went wrong
}
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图像传递给下一个的地方activity
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
if let pass = segue.destinationViewController as postView
{
if let image = imageChosen.image{
pass.currentImage = imageChosen.image
}
}
}
}
为了便于理解,我写得非常冗长
您一直收到错误的原因是因为您在分配图像时没有分配您的 imageChosen。
解决方案
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
// Add this line
imageChosen = UIImageView()
}
在你声明 imageChosen = UIImageView() 之后,它会解决你的问题
希望对您有所帮助!
我有一个小问题,每当我删除下图中显示的 Outlet (imageChosen)(带有黄色警告)时,应用程序会在图像应该通过时崩溃
我是这样定义的
var imageChosen: UIImageView!
我就是这样将从图库中选择的图像保存到 imageChosen
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
var chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = chosenImage
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图像传递给下一个的地方 activity
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
var pass:postView = segue.destinationViewController as! postView
pass.currentImage = imageChosen.image
}
}
当我删除图片中的插座时,应用程序崩溃,因为图像为零,即使代码似乎没问题, 谁能帮帮我
您还需要从 ViewController
(swift 文件)中删除插座,您在图片中看到插座的地方 post 单击 (x) 以从 imageChosen 中删除插座,因为它不再存在(您可以从代码中看到黄色三角形形式的警告)。
您还应该将代码更改为:
var imageChosen: UIImageView?
我就是这样将从图库中选择的图像保存到 imageChosen
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
if let image = info[UIImagePickerControllerOriginalImage] as UIImage{
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = image
}
else
{
//something went wrong
}
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图像传递给下一个的地方activity
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
if let pass = segue.destinationViewController as postView
{
if let image = imageChosen.image{
pass.currentImage = imageChosen.image
}
}
}
}
为了便于理解,我写得非常冗长
您一直收到错误的原因是因为您在分配图像时没有分配您的 imageChosen。
解决方案
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
// Add this line
imageChosen = UIImageView()
}
在你声明 imageChosen = UIImageView() 之后,它会解决你的问题
希望对您有所帮助!