跨数据重新加载在自定义UICollectionViewLayout中维护视图的第一响应者状态

时间:2018-08-14 23:26:38

标签: ios uicollectionview uicollectionviewlayout

我正在从头开始开发UICollectionViewLayout。我想实现交错的网格布局,也就是Pinterest布局。我知道那里有很多东西,但是几乎所有它们都只支持静态商品高度,而我希望动态地计算商品高度。

我使布局过程能够正常工作,但是现在我偶然发现了一个问题。我想在部分标题中添加一个搜索栏。问题在于,每当我呼叫collectionView.reloadData()时,搜索栏都会丢失第一个响应者状态(同时保持其他状态,例如当前值)。

我尝试了通常的解决方法(例如在searchBar.becomeFirstResponder()之后立即调用reloadData()),但是没有帮助。另一个解决方法是将带有搜索栏和项目的标题保留在单独的部分中,并且仅在项目中重新加载该部分,但是我的布局当前仅支持一个部分,因此很高兴知道这是否可以在花费时间之前真正解决问题实现对多个部分的支持(否则我不需要)。

是什么导致搜索栏失去第一响应者状态,如何防止这种情况发生? 我对自定义UICollectionViewLayout并没有太多的经验,所以我也很感谢有关幕后情况的信息(重新装入数据时以及一般情况下)。

1 个答案:

答案 0 :(得分:0)

我最终实现了对多个部分的支持,将标题和带有搜索栏的标题保留在单独的部分中,并且仅向该部分重新加载项目。似乎这种解决方法也适用于自定义布局。