Я пытаюсь передать изображение в новый контроллер представления через переход. Мне удалось передать заголовок в контроллер представления, но я продолжаю получать ошибку: «Не удается преобразовать значение типа '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
Ваша переменная img, объявленная в DetailViewController, имеет тип UIImage. Метод UIImage(named: img) ожидает строковое имя изображения, а не сам объект изображения.
Вы должны напрямую установить изображение так,
detailCrystalPhotoImageView.image = img