2015-06-30 3 views
2

Мне удалось прокрутить элемент по индексу, например. если пользователь нажимает кнопку она переходит к последнему пунктуUICollectionView прокрутите к элементу по индексу

Вот код, который я использовал

self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 

Но мой вопрос как знать, если пользователь находится в нижней части или на верхняя часть UICollectionView?

Я могу сделать это путем создания 2 функции и, если пользователь вводит на TOP UIButton она идет вверх, и наоборот ...

Но я только хочу сделать это с помощью одного UIButton. так что, если пользователь нажимает кнопку, код должен знать, находится ли пользователь внизу и идет вверх и наоборот. Я посмотрел на каждую функцию по адресу UICollectionView, но, похоже, не return, на котором пользователь на.

Я думал о чем-то логически может быть правильным, так как это один

var someBool: Bool! 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
let tempIndex: Int = self.array.count/2 

if indexPath.row > tempIndex{ 
    someBool = true // UP 
} else { 
    someBool = false // Down 
} 
... 
} 

@IBAction func buttonPressed{ 
    if someBool{ 
    self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 
    } else { 
    self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 
    } 
} 

это значит, давайте предположим, массив имеет 9 элементов/2 = 4 (INT), так что если пользователь выбирает пункт 9, 9> 4 истина идет вверх вниз.

Я считаю, что этот код работает хорошо, только если пользователь выбирает элемент, но мне нужен альтернативный способ без использования indexPath.row, так как предположим, что пользователь не выбрал какой-либо элемент ... так что этот код не будет работать ....

+0

Можете ли вы использовать свойство contentOffset для коллекции? (Если нет, можете ли вы объяснить, почему это не сработает для вас?) –

+0

uhmm, 'contentOffset'? что это свойство? не могли бы вы показать мне образец кода? –

+0

См. Https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollView_Class/#//apple_ref/occ/instp/UIScrollView/contentOffset и http://www.objc.io/issues/3 -views/scroll-view/ –

ответ

6

если вы поддерживаете с IOS 8,0

optional func collectionView(_ collectionView: UICollectionView, 
      willDisplayCell cell: UICollectionViewCell, 
      forItemAtIndexPath indexPath: NSIndexPath) 

Этот новый API является использование полной, так что ваш код будет прекрасно работал просто переместить код из didSelectItemAtIndexPath к этому методу, поскольку он вызывает каждый и проверьте свой indexpath.row здесь. дайте мне знать, если это поможет.

+0

Спасибо, что работает :) –

+0

@MohamedHorani отличный помощник по команде –

+0

Это потрясающе, спасибо! – rilar

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