Получить indexPath ячейки, когда она отображается из collectionView

Мне нужно получить indexPath ячейки, которая будет показана (что-то вроде viewWillAppear:, в то время отображается 1 или 2 ячейки, пейджинг включен).

Я не могу найти ни одного метода/делегата, который сообщит мне, что ячейки были перемещены, и теперь будет отображаться indexPath XYZ. Любая помощь, пожалуйста?

edit: у меня есть label выше collectionView, где я хочу отображать информацию о отображаемой в данный момент ячейке. Проблема в том, что я не знаю, куда отправить информацию из ячейки в метку, что именно эта ячейка сейчас отображается.


person Nat    schedule 16.01.2014    source источник
comment
непонятно, что вы спрашиваете.   -  person Toseef Khilji    schedule 16.01.2014
comment
Разве вы не создаете эти ячейки в UICollectionViewDataSource? Поэтому вы знаете ячейку, которая создается.   -  person trojanfoe    schedule 16.01.2014
comment
Возможный дубликат - stackoverflow.com/questions/13176333/   -  person Nayan    schedule 16.01.2014
comment
@NSS Да, это похожий вопрос. Однако метод scrollViewDidEndDecelerating не поможет, так как он слишком поздно обновит метку (тем временем мы видим несколько других ячеек, моя метка не будет обновлена). Другие методы UIScrollView также не являются лучшим решением, так как слишком часто обновляют информацию.   -  person Nat    schedule 16.01.2014
comment
@trojanfoe Я знаю, какая ячейка создается, но я не знаю, какая ячейка отображается. Это другое дело, так как UICollectionView часто удаляет ячейку из очереди перед ее отображением.   -  person Nat    schedule 16.01.2014


Ответы (2)


Попробуйте использовать cellForItemAtIndexPath... Он будет вызываться каждый раз, когда будет отображаться ячейка, даже если она была показана раньше.

Это ответило на ваш вопрос? Если нет, пожалуйста, предоставьте код, ура :)

person Abdullah Alharbi    schedule 16.01.2014
comment
Я поделился кодом в своем ответе;). cellForItemAtIndexPath, но ничто не гарантирует мне, что видимая ячейка будет вызвана последней - другие ячейки могут быть вызваны позже, и я переопределю описание для неправильной ячейки. Спасибо за ваш ответ! - person Nat; 16.01.2014

Лучшим решением (при использовании пейджинга) было использование collectionView:didEndDisplayingCell:forItemAtIndexPath: и этой строки внутри:

NSIndexPath *visibleIndexPath = [myCollectionView indexPathsForVisibleItems].firstObject;
person Nat    schedule 16.01.2014