Прежде всего, вы не можете использовать onceToken
в сюда. Как я писал в своем комментарии, прочитайте this.
Быстрые ошибки/предупреждения компилятора иногда вводят в заблуждение. Они улучшают их, но ... Когда возникает такая ошибка, и я не вижу проблемы в своем коде, я собираюсь добавить простой return
в конце моего закрытия (чтобы соответствовать типу подписи типа закрытия). Как это ...
dispatch_once(&onceToken, {() -> Void in
self.myCollectionView.scrollToItemAtIndexPath(NSIndexPath.indexAtPosition(1),
atScrollPosition: UICollectionViewScrollPosition.Left, animated: false)
return
})
... это делает компилятор счастливее и теперь вы видите свою реальную проблему ...
Cannot invoke 'indexAtPosition' with an argument list of type '(Int)'
... и это потому, что вы вызываете метод indexAtPosition
, который нет класс способ, на NSIndexPath
класс. И вы должны пройти NSIndexPath
объект там.
Если вы хотите, чтобы перейти к первому пункту, вы должны назвать его таким образом:
dispatch_once(&onceToken) {
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
self.myCollectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .Left, animated: false)
}
Пожалуйста * копировать/вставить * ваш реальный код, а не скриншот. –
Прочтите мой [ответ] (http://stackoverflow.com/a/31256136/581190), чтобы узнать, как его использовать. – robertvojta
@robertvojta: 'вар onceToken: dispatch_once_t = 0 dispatch_once (& onceToken), { // self.myCollectionView.scrollToItemAtIndexPath (NSIndexPath.indexAtPosition (1), atScrollPosition: UICollectionViewScrollPosition.Left, анимированные: ложь) }' это ошибка, когда я раскомментирую прокомментированную строку. – vichhai