Objective c 接收UICollectionViewCell上的通知';从其父集合或表视图中删除(或UITableViewCell';s)
背景: 我有一个Objective c 接收UICollectionViewCell上的通知';从其父集合或表视图中删除(或UITableViewCell';s),objective-c,uitableview,uikit,uicollectionview,uicollectionviewcell,Objective C,Uitableview,Uikit,Uicollectionview,Uicollectionviewcell,背景: 我有一个UICollectionViewController,它以两种模式之一显示项目,用户可以在这两种模式之间切换。每种模式都使用不同类别的UICollectionViewCell。让我们将这些模式称为“列表视图”和“网格视图” 切换模式时,我在UICollectionView上调用.reloadData,它使用正确的单元格类重新绘制集合视图。这里一切都很好 现在:在一种单元格类型的UICollectionViewCell子类中,我希望在包含它的集合视图切换模式时收到通知。从视觉上看,
UICollectionViewController
,它以两种模式之一显示项目,用户可以在这两种模式之间切换。每种模式都使用不同类别的UICollectionViewCell
。让我们将这些模式称为“列表视图”和“网格视图”
切换模式时,我在UICollectionView
上调用.reloadData
,它使用正确的单元格类重新绘制集合视图。这里一切都很好
现在:在一种单元格类型的UICollectionViewCell
子类中,我希望在包含它的集合视图切换模式时收到通知。从视觉上看,屏幕上的一个单元消失了;集合视图完全与其他类型的单元格一起绘制。切换回时,单元格将重新显示
问题:
当UICollectionViewCell
从其父集合视图中“删除”(即不再显示;我还不确定引擎盖下发生了什么)时,如何通知我
注意事项:
- 当集合视图的
导致单元格不再包含时,不会对单元格调用updateData
prepareforeuse
(空布局?)的转换将不会调用从布局:到布局:
- 重写
没有帮助;它不叫didmovetoserview
- 在单元格上观察
或.hidden
不起作用.alpha
- 未调用单元格的
;它停留在重用队列中dealloc
单元格中的某些内容必须在更改,我可以观察到或连接到它,它是什么?更新:
UICollectionViewDelegate
有此方法,从文档中看,它似乎满足了我的要求:
- collectionView:DiEndDisplayingCell:forItemAtIndexPath:
原始答复: 当我准备切换并调用
reloadData
时,我让UICollectionViewController
使用此方法手动通知可见单元格即将到来的厄运:
- (void)notifyCellsWillBeHidden {
for (UICollectionViewCell *cell in self.collectionView.visibleCells) {
if ([cell respondsToSelector:@selector(willBeRemovedFromCollectionView)]) {
[cell performSelector:@selector(willBeRemovedFromCollectionView)];
}
}
}
如果实现上述方法,这些单元就可以完成它们需要做的事情
调用prepareforeuse
可能不是一个好主意,因为如果出现问题,将在单元格重新显示之前再次调用它
我仍然很好奇,是否有一种方法可以让一个手机接收到一个通知,即如果没有一个明确的呼叫,它将变得不可见