如何删除单元格中的UIViewController
我有一个ListViewController通过以下如何删除单元格中的UIViewController
class ListViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let obj: AnObject = ObjectCollection!.getObject(index: indexPath.item)
let cell: UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: NSStringFromClass(UICollectionViewCell.self), for: indexPath as IndexPath)
let cellView: UIImageView = UIImageView(image: obj.image)
cellView.frame = cell.bounds
cell.contentView.addSubview(cellView)
return cell
}
的问题是,当我删除单元格中的内容,然后按返回键的方法增加了一个图,该细胞是未删除并显示以前的内容。
我的删除方法是
func deleteObject(index: Int) {
// delete from the collection
ObjectCollection?.deleteObject(index: index)
self.collectionView.reloadData()
}
,我需要明确地删除单元格或其内容?
确保reloaddata()
之前必须删除单元格,并在您dataArray中的细胞的OBJ。
我认为方法numberOfItems:inSection
,你的代码是return dataArray.count
,但是你不会删除dataArray中的单元的obj,所以当你reloaddata()时,你的单元仍然在这里。现在,我知道你的问题,你有两个VC(让我们称之为VC1和VC2),你单元格显示在VC1上,当你点击单元格时,推到VC2,点击VC2的删除按钮,你想删除VC1的单元格, 我对吗 ?如果你想要做这方面的努力, 你可以做一个,属性delegate
,协议的方法,如在VC2 -(void)deleteCell
, 当你推到VC2,设置VC1为VC2的委托,覆盖在协议方法您的VC1, 您单击VC2的删除按钮,在您的响应方法中,使用[self.delegate deleteCell]
。当你回到VC1时,它会自动删除单元格和单元格的obj。
同时,您还可以使用NSNotification
作出的努力。
问题中有一个'deleteObject'方法,OP在提示中提到它正确调用。 – Losiowaty
如果您尝试deleteItems方法,它可能会工作。
func deleteObject(indexPath: IndexPath) {
// delete from the collection
ObjectCollection.deleteObject(index: indexPath.row)
self.collectionView.deleteItems(at: [indexPath])
// self.collectionView.reloadData()
}
那么ObjectCollection是什么?因为很明显,一旦你从它删除对象,它不会被保存,否则当你重新加载你的tableView时它不会再显示 – Pierce
当你调用'deleteObject'时,你确定'ObjectCollection'不是'nil'吗? – Losiowaty
@Losiowaty是的,我相信它不是零。它确实将对象从集合中移除,因为一旦我通过单击它不显示的单元格来选择它。 – user2175783