如何通过 segue 将图像传递到新的视图控制器中?
How to pass images through segue into new view controller?
我正在尝试通过 segue 将图像传递到新的视图控制器中。我能够将标题传输到视图控制器中,但我不断收到错误消息:“无法将类型 'UIImage?.Type' 的值转换为预期的参数类型 'String'”。这是代码:
import UIKit
class DetailViewController: UIViewController {
var name = ""
var img: UIImage?
@IBOutlet weak var detailCrystalNameLabel: UILabel!
@IBOutlet weak var detailCrystalPhotoImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
title = name
detailCrystalPhotoImageView.image = UIImage(named: img)
}
}
这是来自视图控制器的代码:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainCollectionViewCell", for: indexPath) as! MainCollectionViewCell
cell.crystalPhotoImageView.image = imageArray[indexPath.row]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(identifier: "DetailViewController") as? DetailViewController
vc?.name = nameArray[indexPath.row]
vc?.img = imageArray[indexPath.row]
self.navigationController?.pushViewController(vc!, animated: true)
}
}
问题出在这一行detailCrystalPhotoImageView.image = UIImage(named: img)
。这里的参数 named
是字符串类型。您在这里传递 img
类型 UIImage
。所以你可以通过
解决这个问题
detailCrystalPhotoImageView.image = img
您在 DetailViewController
中声明的 img
变量的类型为 UIImage
。 UIImage(named: img)
方法需要图像的字符串名称,而不是图像对象本身。
你必须像这样直接设置图像,
detailCrystalPhotoImageView.image = img
我正在尝试通过 segue 将图像传递到新的视图控制器中。我能够将标题传输到视图控制器中,但我不断收到错误消息:“无法将类型 'UIImage?.Type' 的值转换为预期的参数类型 'String'”。这是代码:
import UIKit
class DetailViewController: UIViewController {
var name = ""
var img: UIImage?
@IBOutlet weak var detailCrystalNameLabel: UILabel!
@IBOutlet weak var detailCrystalPhotoImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
title = name
detailCrystalPhotoImageView.image = UIImage(named: img)
}
}
这是来自视图控制器的代码:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainCollectionViewCell", for: indexPath) as! MainCollectionViewCell
cell.crystalPhotoImageView.image = imageArray[indexPath.row]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(identifier: "DetailViewController") as? DetailViewController
vc?.name = nameArray[indexPath.row]
vc?.img = imageArray[indexPath.row]
self.navigationController?.pushViewController(vc!, animated: true)
}
}
问题出在这一行detailCrystalPhotoImageView.image = UIImage(named: img)
。这里的参数 named
是字符串类型。您在这里传递 img
类型 UIImage
。所以你可以通过
detailCrystalPhotoImageView.image = img
您在 DetailViewController
中声明的 img
变量的类型为 UIImage
。 UIImage(named: img)
方法需要图像的字符串名称,而不是图像对象本身。
你必须像这样直接设置图像,
detailCrystalPhotoImageView.image = img