Swift - NSInvalidArgumentException и NSIndexPath - PullRequest
0 голосов
/ 27 мая 2018

У меня есть TableView с 14 ячейками, и в каждой ячейке есть CollectionView с 25 ячейками, когда при переходе с номера ячейки 24 в ячейку 25 происходит сбой!

Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина:' попытка прокрутить до неверного пути индекса: {длина = 2, путь = 0 - 25} '

Код:

var EnabledID = Int()

override func viewWillAppear(_ animated: Bool) {

    EnabledID = UserDefaults.standard.integer(forKey: "EnabledID")

    if EnabledID == 0 {

        EnabledID = 1
        UserDefaults.standard.set(1, forKey: "EnabledID")

    } else {

        let index = NSIndexPath(item: EnabledID, section: 0)
        self.myCollectionView.scrollToItem(at: index as IndexPath, at: .centeredHorizontally, animated: true)

    }

}

Над кодом, который я хочу, чтобы после завершения любой ячейки свиток автоматически переходил к следующей ячейке в CollectionView.

Что такое решение ???

1 Ответ

0 голосов
/ 27 мая 2018

Пожалуйста, добавьте условие, чтобы проверить, существует ли indexPath или нет (поскольку индекс начинается с 0, поэтому ваши индексы, такие как 0-24 и путь индекса 25, не будут существовать, поэтому, пожалуйста, добавьте проверку перед перезагрузкой):

override func viewWillAppear(_ animated: Bool) {

    EnabledID = UserDefaults.standard.integer(forKey: "EnabledID")

    if EnabledID == 0 {

        EnabledID = 1
        UserDefaults.standard.set(1, forKey: "EnabledID")

    } else {

       let totelCells = myCollectionView.numberOfItems(inSection: 0)
       if totelCells > EnabledID {
        let index = NSIndexPath(item: EnabledID, section: 0)
        self.myCollectionView.scrollToItem(at: index as IndexPath, at: .centeredHorizontally, animated: true)

      }
    }

}
...