我试图将图像从一个视图传递到另一个视图,而我的代码似乎无法正常工作 - 它将用户带到新视图但图像不会被转移到好。任何帮助将不胜感激!
因此,这里有一个名为Post的按钮,可以将用户带到新视图。
@IBAction func postButton(sender: AnyObject) {
performSegueWithIdentifier("toBrowsePage", sender: nil)
}
然后,在另一个视图控制器的另一个文件中......
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toBrowsePage" {
var itemToAdd = segue.destinationViewController as! ListPage
itemToAdd.postingImage.image = browsingImage.image
}
}
答案 0 :(得分:1)
永远不要直接从另一个ViewController
分配图片,如下所示:
itemToAdd.postingImage.image = browsingImage.image
但是不要这样做,只需将imageName
传递给下一个视图控制器,然后在保存此图像名称的nextViewController
中创建一个实例,之后可以在{{1}中分配该图像其他ViewDidLoad
的方法。
考虑这个例子:
你可以通过这种方式传递ViewController
:
ImageName
在itemToAdd.imageName = "YourImageName"
创建一个包含此nextViewController
的实例:
String
在var imageName = ""
方法中:
ViewDidLoad
希望这会有所帮助。
答案 1 :(得分:0)
因为您正在尝试设置内存中不存在的UIImageView
图像,因此不会显示。
相反,您只需要将图像对象传递给下一个控制器。在下一个控制器中为您的图像正确创建&然后将图像从此控制器传递到下一个控制器。
答案 2 :(得分:0)
在ListPage ViewController中定义一个UIImage
var newImage: UIImage?
现在在prepareForSegue中:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toBrowsePage" {
var itemToAdd = segue.destinationViewController as! ListPage
itemToAdd.newImage = browsingImage.image
}
}
现在在ListPage ViewDidLoad方法中设置Image:
postingImage.image = newImage