Swift - NSInvalidArgumentException 和 NSIndexPath
Swift - NSInvalidArgumentException and NSIndexPath
我有一个包含 14 个单元格的 TableView,每个单元格中有一个包含 25 个单元格的 CollectionView,当从单元格编号 24 转移到单元格 25 时,显示我崩溃了!
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: {length = 2, path = 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 中的下一个单元格。
解决的是什么???
请添加一个条件来检查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)
}
}
}
我有一个包含 14 个单元格的 TableView,每个单元格中有一个包含 25 个单元格的 CollectionView,当从单元格编号 24 转移到单元格 25 时,显示我崩溃了!
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: {length = 2, path = 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 中的下一个单元格。
解决的是什么???
请添加一个条件来检查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)
}
}
}