2015-05-18 2 views
0

У меня есть UICollectionView, который возвращает 77 ячеек. Я пытаюсь выяснить, как указать конкретную ячейку, например ячейку в строке 2, колонку 4. Чтобы свести ее до самой моей потребности, мне нужно написать заявление, которое бы это сделало:Find Index Number of Specific Cell UICollectionView

if cell[46] == cell[12] { 
println("they match") 
} 

Я не знаю, с чего начать с этой задачи. Я начал с попытки распечатать indexPath, который используется в моем методе prepareForSegue, но это ничего не возвращает.

Этот вид коллекции использует динамические ячейки. Не имеет значения, чтобы сделать их статическими ячейками?

+0

Рассматривали ли вы метод метода 'indexPathForCell (_ :)'? Его можно найти здесь (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/index.html#//apple_ref/occ/instm/UICollectionView/indexPathForCell :). Ваш вопрос очень неоднозначен, на данный момент я возглавляю название, чтобы предположить, что вы просто хотите найти свойство indexPath для ячейки. Но тогда я также убежден, что вы хотите сравнить данные в ячейке по вашему вопросу. Измените свой вопрос, чтобы уточнить. – Jeffrey

+0

В вашем if-statement вы сравниваете ячейки. Как вы хотите их сравнить? По содержащимся в них данным? Если это так, вам следует рассмотреть возможность сравнения источника данных, а не ячейки, в которой они отображаются. – Ian

+0

@jkaufman Я не хочу получать указательный путь каждой из ячеек. Мне нужно знать, что каждый из их индексов. Должна быть логическая группировка. Например, если у вас есть 11 ячеек на экране, первый из них - 'collectionview.cell [0], второй -' collectionview.cell [1] '. –

ответ

1

Там существует collectionView?.visibleCells(), которая возвращает [AnyObject], которые вы можете бросить, чтобы быть типа UICollectionViewCell, так что вы можете получить массив на экране ячеек. Затем вы можете получить доступ к конкретным ячейкам с помощью нотации для индексации, но я по-прежнему не думаю, что непосредственное сравнение ячеек - лучший подход, и если вы можете хранить свои данные таким образом, чтобы вы могли легко получить доступ к значениям без запроса сервер каждый раз, это будет гораздо лучший подход к тому, что вы пытаетесь выполнить.

0

Как уже упоминалось @jkaufman, вам нужно использовать метод, который доставит вам ячейку из указательного пути. func cellForItemAtIndexPath(_ indexPath: NSIndexPath) -> UICollectionViewCell? - это метод, который вам нужен, и вы можете передать ему путь индекса, который может быть построен с индексом раздела и строки. Оттуда вы можете получить каждую из своих ячеек и выполнить сравнение после извлечения обеих ячеек из cellForItemAtIndexPath.

Функция документация: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/#//apple_ref/occ/instm/UICollectionView/cellForItemAtIndexPath: