【问题标题】:Passing data between View Controllers (Swift)在视图控制器之间传递数据 (Swift)
【发布时间】:2015-07-22 14:50:56
【问题描述】:

我正在尝试将图像从一个视图传递到另一个视图,但我的代码似乎无法正常工作 - 它将用户带到新视图,但图像也没有传输过来。任何帮助将不胜感激!

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

    }

}

【问题讨论】:

  • postingImage 为零吗?
  • 没有。当我在手机上运行该应用程序时,我正在上传一张图片,所以它不能为零。

标签: swift segue


【解决方案1】:

永远不要像这样直接从另一个 ViewController 分配图像:

itemToAdd.postingImage.image = browsingImage.image

但不要这样做,只需将imageName 传递给下一个视图控制器,并在您的nextViewController 中创建一个实例,其中包含此图像名称,然后您可以使用其他@ 的ViewDidLoad 方法分配该图像987654326@。

考虑这个例子:

你可以这样传递ImageName

itemToAdd.imageName = "YourImageName"

在您的nextViewController 中创建一个包含此String 的实例:

var imageName = ""

在您的ViewDidLoad 方法中:

postingImage.image = UIImage(named: imageName)

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    这是因为您尝试设置内存中不存在的UIImageView 的图像,因此不会显示。

    相反,您只需将图像对象传递给下一个控制器。在下一个控制器中为您的图像正确创建,然后将图像从该控制器传递到下一个控制器。

    【讨论】:

      【解决方案3】:

      在您的 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
      

      【讨论】:

      • 这看起来不错,但仍然无法正常工作。是不是我在 ListPage 中的 Post 按钮?也许它在 prepareforsegue 之前被调用? @IBAction func postButton(sender: AnyObject) { performSegueWithIdentifier("toBrowsePage", sender: nil) }
      • 在 ListPage ViewDidLoad 中做一个断点并检查你的 newImage 是否为 nil ?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2011-07-09
      相关资源
      最近更新 更多