我有collectionView
。我有代码:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if UserDefaults.standard.bool(forKey: "purchase") {
myCell.cover.image = nil
}
}
我还有secondViewController
。我使用此代码执行secondViewController
:
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let imageRevealVC = mainStoryboard.instantiateViewController(withIdentifier: "InfoViewController") as! InfoViewController
imageRevealVC.modalPresentationStyle = .overCurrentContext
self.present(imageRevealVC, animated: false, completion: nil)
如果我购买产品,则需要从secondViewController
返回代码后调用willDisplaycell
删除图像。可能吗?
答案 0 :(得分:0)
当您从注释中也得到想法时,应该重新加载collectionView,以便在加载collectionView单元的UI时对其进行任何更改,并且数据源将发生任何更改。就像您要对购买的产品的状态进行编辑,还是要从列表中删除购买的项目。
现在,您应该在哪里进行更新?
每次您弹出viewController时,它将带您到以前的viewController。然后viewWillAppear方法将被调用。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.collectionView.reloadData()
}
答案 1 :(得分:0)
您已将视图控制器发送到secondViewController
在secondViewController中创建属性
express
创建secondViewController时,发送父级
var parentVC: YOURVIEWCONTROLLER?
在secondViewcontroller中,您需要做的是更改数据模型。完成后,例如在okButton中,调用parentVC重新加载该索引路径
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
imageRevealVC = mainStoryboard.instantiateViewController(withIdentifier: "InfoViewController") as! InfoViewController
imageRevealVC.modalPresentationStyle = .overCurrentContext
imageRevealVC.parentVC = self
self.present(imageRevealVC, animated: false, completion: nil)
在您的parentViewController中创建一个乐趣,以重新加载所选的索引路径。您必须先保存它,然后再进入seconfViewController
self.parentVC?.reloadItem()