Ios 使用segues将解析数组中的图像快速链接到secondViewController
这是我的代码,我试图使用“prepareForSegue”函数将图像从tableViewController(firstViewController)发送到我的detailedViewController(secondViewController)。我已经成功地从解析云填充了我的第一个ViewController,并且我已经成功地更新了我的第二个ViewController标签,但是我无法更新imageView。我已经把我的代码贴在下面了 firstViewControllerIos 使用segues将解析数组中的图像快速链接到secondViewController,ios,swift,parse-platform,segue,Ios,Swift,Parse Platform,Segue,这是我的代码,我试图使用“prepareForSegue”函数将图像从tableViewController(firstViewController)发送到我的detailedViewController(secondViewController)。我已经成功地从解析云填充了我的第一个ViewController,并且我已经成功地更新了我的第二个ViewController标签,但是我无法更新imageView。我已经把我的代码贴在下面了 firstViewController over
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中添加了一种从表视图单元格检索图像的方法。因为你是说图像已经加载,你应该能够将其传输到你的详细视图。不幸的是,这不起作用,我很困惑,我尝试了这么多的事情,但似乎无法让它工作。最后还有什么建议吗?