Ios 使用segues将解析数组中的图像快速链接到secondViewController

Ios 使用segues将解析数组中的图像快速链接到secondViewController,ios,swift,parse-platform,segue,Ios,Swift,Parse Platform,Segue,这是我的代码,我试图使用“prepareForSegue”函数将图像从tableViewController(firstViewController)发送到我的detailedViewController(secondViewController)。我已经成功地从解析云填充了我的第一个ViewController,并且我已经成功地更新了我的第二个ViewController标签,但是我无法更新imageView。我已经把我的代码贴在下面了 firstViewController over

这是我的代码,我试图使用“prepareForSegue”函数将图像从tableViewController(firstViewController)发送到我的detailedViewController(secondViewController)。我已经成功地从解析云填充了我的第一个ViewController,并且我已经成功地更新了我的第二个ViewController标签,但是我无法更新imageView。我已经把我的代码贴在下面了

firstViewController

    override func prepareForSegue(segue: UIStoryboardSegue, sender:      AnyObject?) {

    let eventDetailVC: EventDetailsVC = segue.destinationViewController as!  EventDetailsVC
    if let selectedArrayIndex = tableView.indexPathForSelectedRow?.row {

        eventDetailVC.detailNameLabel = postedEvents[selectedArrayIndex]
        eventDetailVC.detailAddressLabel = postedAddress[selectedArrayIndex]
        eventDetailVC.detailCityLabel = postedCity[selectedArrayIndex]
        eventDetailVC.detailStateLabel = postedState[selectedArrayIndex]
        eventDetailVC.detailStartLabel = postedStart[selectedArrayIndex]
        eventDetailVC.detailEndLabel = postedEnd[selectedArrayIndex]
        eventDetailVC.detailPriceLabel = postedPrices[selectedArrayIndex]
        eventDetailVC.detailDescriptionLabel =    postedDescription[selectedArrayIndex]

        // The error is here....i think
        eventDetailVC.detailImageView.image = image

    }
}
第二视图控制器

   var detailNameLabel = String()
   var detailDescriptionLabel = String()
   var detailPriceLabel = String()
   var detailStartLabel = String()
   var detailEndLabel = String()
   var detailAddressLabel = String()
   var detailCityLabel = String()
   var detailStateLabel = String()
   var detailImageView = UIImage()

   override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    detailName.text = detailNameLabel
    detailDescription.text = detailDescriptionLabel
    detailPrice.text = detailPriceLabel
    detailStart.text = detailStartLabel
    detailEnd.text = detailEndLabel
    detailAddress.text = detailAddressLabel
    detailCity.text = detailCityLabel
    detailState.text = detailStateLabel

    // its this line below....i think
    detailImage.image = detailImageView
    }

有人能帮我弄明白吗,我对这整件事还不太熟悉。看起来你应该在secondViewController中定义UIImageView而不是UIImage。您的
detailImageView
必须是
UIImageView
类型。按照您编写它的方式,它的类型是
UIImage

在secondViewController中,替换

var detailImageView = UIImage()

然后改变:

// its this line below....i think
detailImage.image = detailImageView

要处理从表格视图单元格发送到第二个视图控制器的图像,需要从所选单元格抓取图像。在您的prepareForSegue中,这看起来像这样:

if let myIndexPath = tableView.indexPathForSelectedRow? {
    let cell = self.tableView.cellForRowAtIndexPath(myIndexPath)
    eventDetailVC.detailImageView.image = cell.postedEventImage.image 
}


您在viewDidLoad和secondViewController中的其他分配也有点不寻常。您似乎正在根据命名方式从UILabels中指定文本值。如果变量是UILabel,则将其命名为somethingLabel是合适的。但是,如果类型是字符串(它们基于变量赋值),则将其命名为somethingLabel可能会引起混淆。

看起来您应该在secondViewController中定义UIImageView而不是UIImage。您的
detailImageView
必须是
UIImageView
类型。按照您编写它的方式,它的类型是
UIImage

在secondViewController中,替换

var detailImageView = UIImage()

然后改变:

// its this line below....i think
detailImage.image = detailImageView

要处理从表格视图单元格发送到第二个视图控制器的图像,需要从所选单元格抓取图像。在您的prepareForSegue中,这看起来像这样:

if let myIndexPath = tableView.indexPathForSelectedRow? {
    let cell = self.tableView.cellForRowAtIndexPath(myIndexPath)
    eventDetailVC.detailImageView.image = cell.postedEventImage.image 
}


您在viewDidLoad和secondViewController中的其他分配也有点不寻常。您似乎正在根据命名方式从UILabels中指定文本值。如果变量是UILabel,则将其命名为somethingLabel是合适的。但是,如果类型是字符串(它们基于变量赋值),则将其命名为somethingLabel可能会引起混淆。

我想您希望看到的保存代码

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let myCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! EventsCell

    postedImages[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in

        if let downloadedImage = UIImage(data: data!) {

            myCell.postedEventImage.image = downloadedImage
        }
    }
    myCell.eventName.text = postedEvents[indexPath.row]
    myCell.eventStart.text = postedStart[indexPath.row]
    myCell.eventPrice.text = postedPrices[indexPath.row]

    return myCell
}
还有一段代码是关于如何附加到postmages数组的

     if let objects = objects {
                for object in objects {

                    self.postedImages.append(object.objectForKey("Image") as! PFFile)

                    self.tableView.reloadData()
                }

她的保存代码我想你想看看

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let myCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! EventsCell

    postedImages[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in

        if let downloadedImage = UIImage(data: data!) {

            myCell.postedEventImage.image = downloadedImage
        }
    }
    myCell.eventName.text = postedEvents[indexPath.row]
    myCell.eventStart.text = postedStart[indexPath.row]
    myCell.eventPrice.text = postedPrices[indexPath.row]

    return myCell
}
还有一段代码是关于如何附加到postmages数组的

     if let objects = objects {
                for object in objects {

                    self.postedImages.append(object.objectForKey("Image") as! PFFile)

                    self.tableView.reloadData()
                }

我仍然收到一个错误,我发布了FirstViewController的新代码该图像是否已经出现在您的表视图中?如果是这样,您应该从表视图单元格中获取图像,而不是再次从服务器中获取图像。为什么不将图像保存在
positmages
数组中,就像保存其余数据一样?由于内存的使用,您可能不想这样做。在
prepareForSegue
中下载图像的问题是,这是一个后台操作,图像无法立即使用。是,图像显示在我的表格视图控制器中。我如何从手机而不是服务器抓取它?我的postmages数组是PFFile类型。代码是什么样子的?我在prepareForSegue中添加了一种从表视图单元格检索图像的方法。因为你是说图像已经加载,你应该能够将其传输到你的详细视图。不幸的是,这不起作用,我很困惑,我尝试了这么多的事情,但似乎无法让它工作。最后有什么建议吗?我仍然收到一个错误,我发布了FirstViewController的新代码该图像是否已经出现在您的表视图中?如果是这样,您应该从表视图单元格中获取图像,而不是再次从服务器中获取图像。为什么不将图像保存在
positmages
数组中,就像保存其余数据一样?由于内存的使用,您可能不想这样做。在
prepareForSegue
中下载图像的问题是,这是一个后台操作,图像无法立即使用。是,图像显示在我的表格视图控制器中。我如何从手机而不是服务器抓取它?我的postmages数组是PFFile类型。代码是什么样子的?我在prepareForSegue中添加了一种从表视图单元格检索图像的方法。因为你是说图像已经加载,你应该能够将其传输到你的详细视图。不幸的是,这不起作用,我很困惑,我尝试了这么多的事情,但似乎无法让它工作。最后还有什么建议吗?