'попытка прокрутить до неверного пути к индексу: {длина = 2, путь = 0 - 4} - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть горизонтальное представление коллекции, работающее как пейджер из 4 экранов / шагов. Я отключил горизонтальную прокрутку как способ выполнения следующего действия только с плавающей кнопки:

   let nextItem = self.selectedIndexPath.item + 1
   self.scrollToStep(index: IndexPath(item: nextItem, section: 0))


   func scrollToStep(index: IndexPath){
      selectedIndexPath = index
      collectionView.scrollToItem(at: index, at: .centeredHorizontally, animated: true)  
}

Во второй раз, когда я нажимаю кнопку, приложение вылетает.

] * Завершение приложения из-за необработанного исключения NSInvalidArgumentException, причина: попытка прокрутки до недействительного Путь индекса: {длина = 2, путь = 0 - 4} ' * Стек первого вызова вызова: (0 CoreFoundation 0x00000001088dd6fb __exceptionPreprocess + 331 1 libobjc.A.dylib
0x0000000107e81ac5 objc_exception_throw + 48 2 CoreFoundation
0x00000001088dd555 + [Повышение NSException: формат:] + 197 3 UIKitCore
0x000000010b79ef93 - [UICollectionView _contentOffsetForScrollingToItemAtIndexPath: atScrollPosition:] + 212 4 UIKitCore 0x000000010b79f86b - [UICollectionView _scrollToItemAtIndexPath: atScrollPosition: animated:] + 70 5 0x0000000105238770 $ s14 18ViewControllerC12scrollToStep5indexy10Foundation9IndexPathV_tF + 480 6 0x00000001052358b5 $ s1 ar 010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFySbcfU_ + 1701

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

4 экрана / шага представлены индексами 0 - 3. Ошибка ясно указывает на ошибку вне диапазона.

Вы должны проверить, достигает ли nextItem конечного индекса

let nextItem = self.selectedIndexPath.item + 1
if nextItem < 4 {
   self.scrollToStep(index: IndexPath(item: nextItem, section: 0))
}
1 голос
/ 02 апреля 2019
var staticIndex = 0


 

при нажатии кнопки

if staticIndex < 3 {

                 var indexPath = IndexPath.init(row: staticIndex+1, section: 0)
          collectionView.scrollToItem(at: indexPath, at: .right, animated: true)
                    staticIndex += 1
            
          
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...