2014-01-21 4 views
0

У меня есть NSIndexPath от uitableview раньше, но я не уверен, почему это не работает для коллекции? Любая помощь будет принята с благодарностью!UICollectionView NSIndexPath?

Вот код, мне нужно исправить:

NSIndexPath *indexPath = [self.collectionView indexPathForSelectedRow]; 
sqlColumns *author = [self.favoriteExercises objectAtIndex:indexPath.row]; 
+0

Что не работает? Что такое 'self.favoriteExercises'? Как выглядит класс 'sqlColumns'? Откуда вы вызываете этот код? – nhgrif

+0

нет его [self.collectionView indexPathForSelectedRow]; –

+0

Я задал 4 вопроса. Вы не ответили никому из них. – nhgrif

ответ

10

Просто используйте indexPathsForSelectedItems вместо indexPathsForSelectedRow. Но эта команда вернет более одного indexPath, если вы выберете несколько элементов. Вы должны ограничить выбор одним элементом, установив allowsMultipleSelection из UICollectionView в NO.

Это говорит о том, что у Xcode есть блестящая функция автозаполнения, вы могли бы начать вводить «индекс», и он бы сразу показал indexPathsForSelectedItems, вы также можете обратиться к отличной документации, прилагаемой к Xcode. Надеюсь, это поможет вам!

ОБНОВЛЕНИЕ 1 - Как захватить indexPath из массива

метод indexPathsForSelectedItems возвращает массив объектов NSIndexPath, каждый из которых соответствует одному выбранному элементу. Если выбранных элементов нет, этот метод возвращает пустой массив.

Теперь, чтобы получить доступ к этому объекту, вы должны спросить себя, как мне получить доступ к массиву? Вы проводите некоторое исследование, и тогда вы придете к такому выводу:

NSArray *arrayOfIndexPaths = [self.collectionView indexPathsForSelectedItems]; 
NSIndexPath *indexPathImInterestedIn = [arrayOfIndexPaths firstObject]; 

//Voila 
+0

этот dosen't работает для мой случай, потому что indexPathsForSelectedItems возвращает массив, разные типы указателей в NSIndexPath –

+0

@RobertSaunders, это именно то, что он должен делать;) Посмотрите мое обновление :) – Pavan

+1

Вызовите 'firstObject' в массиве. – nhgrif

1

Там нет метода indexPathForSelectedRow: в представлениях коллекции, потому что мнения коллекции не ограничиваются строками. У вас могут быть строки, столбцы, круги, спирали, строки И столбцы или почти безграничный список различных способов упорядочивания ячеек.

Проведите поиск в ссылке класса UICollectionView для методов, имена которых начинаются с «indexPath».

Ближайший матч, вероятно:

indexPathsForSelectedItems:

Этот метод работает для одного или нескольких выборов. Он возвращает массив indexPaths вместо одного indexPath (подобно методу табличного представления indexPathsForSelectedRows для табличных представлений, поддерживающих множественный выбор).

Существуют также методы indexPathForCell:, indexPathForItemAtPoint: и indexPathsForVisibleItems.

Смежные вопросы