我试图在ImageView中使用unwind Segue。在我的主VC中,我为unwind segue创建了这个函数:
@IBAction func didUnwindFromSelectIcon(_ sender: UIStoryboardSegue){
guard let imageSelectionImage = sender.source as? SelectIconViewController else {return}
addEatImageViewEat.image = imageSelectionImage.img
}
然后我在第二个VC中使用它
var img: UIImage?
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedImage = collectionView.cellForItem(at: indexPath) as! SelectIconCollectionViewCell
img = selectedImage.selectIconImageView.image
}
我在Storyboard上的CollectionViewCell中选择了didUnwindFromSelectIcon。我没有错误或其他什么,我不确定我的错误是什么。我的addEatImageViewEat不会显示我选择的图片...希望有人看到我的错误 - 提前致谢
更新:
MainVC:
@IBAction func didUnwindFromSelectIcon(_ sender: UIStoryboardSegue){
guard let imageSelectionImage = sender.source as? SelectIconViewController else {return}
addEatImageViewEat.image = imageSelectionImage.img
}
SecondVC:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "unwindSegue" {
if let cell = sender as? SelectIconCollectionViewCell {
img = cell.selectIconImageView.image
}
}
}
答案 0 :(得分:0)
问题是segue在调用func collectionView(_:didSelectItemAt:)
之前发生。
使用prepare(for:sender:)
设置图像,而不是使用该功能:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "unwindSegue" {
if let cell = sender as? SelectIconCollectionViewCell {
img = cell.selectIconImageView.image
}
}
}
确保为您的segue设置标识符,并使用该标识符代替上面的"unwindSegue"
。要设置segue标识符,请在文档大纲视图中找到展开segue并选择它。然后在右侧的 Attributes Inspector 中,将 Storyboard Segue Identifier 设置为您的标识符。