在View Controllers(Swift)之间传递数据

时间:2015-07-22 05:34:45

标签: swift segue

我试图将图像从一个视图传递到另一个视图,而我的代码似乎无法正常工作 - 它将用户带到新视图但图像不会被转移到好。任何帮助将不胜感激!

因此,这里有一个名为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

    }

}

3 个答案:

答案 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