UICollectionView--加载完成后如何获得回调?

7

我有一个UICollectionView,每个单元格中包含一个UITextField。我想在显示完成后进行回调,以便查询模型对象,找到应该成为第一响应者的textField,然后将其设置为第一响应者。我能获得这个回调吗?或者还有其他自然的方法可以实现这个功能吗?


试试这个解决方案,感觉更简洁:https://dev59.com/NWYr5IYBdhLWcg3wAFvE#39425374 - Darko
3个回答

11
如果你向你的集合视图发送layoutIfNeeded消息,则在返回之前,它将更新其子项(根据需要添加和删除单元格)。因此,您可以使其同步更新,然后执行后重载操作。
[myCollectionView layoutIfNeeded];
[self chooseFirstResponderFromCells:myCollectionView.visibleCells];

Architectpianist的答案可能(或可能不)更适合您,这取决于您的情况。 - William Jockusch
你关于UICollectionView的回答真的很有帮助! - Jamal Zafar
我需要调用 collectionView.collectionViewLayout.invalidateLayout(),因为在编程滚动(setContentOffsetscrollToItemAtIndexPath)后,某种原因导致 collectionView 布局错误。 - Luca D'Alberti

5

就实际的回调方法而言,我认为没有针对集合视图加载的回调方法。 我所知道的唯一一个是performBatchUpdates:completion,但那与此无关。 但是根据我的经验,集合视图在调用viewDidAppear时已经加载并准备好了,因此我会在那里设置第一个响应者。

希望这可以帮助你!


0

我从未尝试过,但你可以通过将代码放入其中来实现

dequeueReusableCellWithReuseIdentifier:forIndexPath:

要获取可见单元格的数量(可能是[visibleCells count]),然后跟踪实际处理了多少个单元格,最后在所有单元格都显示后进行回调。不过,在滚动之间必须重置计数。

这样做不太干净,但应该可以工作。我不知道有没有其他方法可以进行回调。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接