如何将图像从 tableView 传输到另一个 imageViewController?

Posted

技术标签:

【中文标题】如何将图像从 tableView 传输到另一个 imageViewController?【英文标题】:How to transfer an image from a tableView to another imageViewController? 【发布时间】:2015-05-22 07:44:06 【问题描述】:

我无法使用prepareForSegue 方法将图像和文本从 tableView 传输到另一个 imageView。

foodimages 是一个包含字符串类型的imageNames 的数组。

我也试过了:

let imgName = "image\(index).png"

但失败了。

import UIKit

class TableView: UITableViewController,UITableViewDataSource,UITableViewDelegate 

var foodNames: [String] = ["Food1","Food2","Food3","Food4","Food5","Food6","Food7","Food8"];
var foodImages: [String] = ["image1", "image2","image3","image4","image5","image6","image7","image8"];


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

    cell.textLabel!.text = foodNames[indexPath.row]
    var image : UIImage = UIImage(named: foodImages[indexPath.row])!
    cell.imageView!.image = image

    return cell




override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 

    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    self.performSegueWithIdentifier("showIMG", sender: indexPath)



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
       if (segue.identifier == "showIMG") 
        var destViewController: imgView = segue.destinationViewController as! imgView

        var index = self.tableView.indexPathForSelectedRow()!.row

            let imgName = foodImages[index]        //"image\(index).png"
            let data = UIImage(named: imgName)!
            destViewController.photo = data
    

二等 名为“imgView”的是

import UIKit

class imgView: UIViewController 

@IBOutlet var secView: UIImageView!
var photo: UIImage!

override func viewDidLoad() 
    secView.image = photo
   

在调试区给出:

索引 (Int)7 imgName(字符串)“KLWR” 数据(UIImage) 0x000000010d667e10 0x000000010d667e10

【问题讨论】:

你确定你在这里传递的名字'UIImage(named: imgName)!'存在于您的捆绑包中吗?因为这个方法 'UIImage(named:' 总是从包中获取图像名称.. photo 也是 UIImage 吗?您如何检测到图像实际上是没有传输的? 奇怪的是,在使用deselectRowAtIndexPath 之后,self.tableView.indexPathForSelectedRow() 仍然返回一个值。 我不知道这是怎么回事我已经上传了我的完整代码,请查看它谢谢 Vizllx、luk2302 和 flash 高级 是的,它正在返回一个值。 @flashadvanced 【参考方案1】:

我认为这里发生的是您尝试在 viewDidLoad 中分配 UIImage 并在您在调用视图控制器中分配图像之前调用它。

你可以这样做:

var image: UIImage? 
    didSet 
        self.secView.image = image
    

因此,您在目标视图控制器中公开一个图像属性,并在设置图像时更新您的图像视图。

【讨论】:

它仍然在 "index" 中返回一个值,但无法从 "foodImages[ ]" 访问图像

以上是关于如何将图像从 tableView 传输到另一个 imageViewController?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从 CollectionView 传输/显示到另一个 ViewController

如何将图像从一个图片框传输到另一个图片框? VB.NET 和 SQL

XMPPFramework - 如何将图像从一台设备传输到另一台设备?

如何将图像从一个面板拖到另一个面板[关闭]

如何使用 SWrevaelviewController swift 3 将数据从 tableview 的特定行传递到另一个视图控制器

如何将 TableView 中的选定行(JSON)发送到另一个视图控制器?