用图像展开Segue

时间:2017-12-05 01:54:35

标签: ios swift uiimageview segue

我试图在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
        }
    }
}

1 个答案:

答案 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 设置为您的标识符。