我的水平集合視圖(僅當它有 0 個單元格時)在嘗試重繪 父視圖時導致崩潰。當集合視圖有 0 個專案(即“shownStations”)時,集合視圖被隱藏。重繪 父視圖時,會呼叫 API 以獲取集合視圖的任何可用項。似乎與錯誤訊息(如下)相關的集合視圖的代碼如下:
if self.shownStations.isEmpty {
self.stationCollectionView?.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
} else {
self.stationCollectionView?.frame = CGRect(x: 0, y: 0, width: 414, height: 150)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if !self.hiddenStations.isEmpty {
return shownStations.count 1
} else {
return shownStations.count
}
}
錯誤訊息: *** 由于未捕獲的例外“NSInternalInconsistencyException”而終止應用程式,原因:“當第 0 部分中只有 0 個專案時,嘗試將集合視圖滾動到越界專案 (0)。集合視圖:< UICollectionView:0x7fc5b101f800;幀 = (0 0; 0 0); clipsToBounds = YES; 自動調整大小 = RM BM; 手勢識別器 = <NSArray: 0x6000022b9fb0>; 層 = <CALayer: 0x600002cd1540>; 內容偏移量:{0, 0};內容大小:{0, 0};調整內容插入:{0, 0, 0, 0}; 布局:<UICollectionViewFlowLayout:0x7fc5b0912ae0>;資料源:<Decibel_iOS.HomeFeedViewController:0x7fc5b1054200>>。'
uj5u.com熱心網友回復:
在您的程式中的某個地方,可能有人正在呼叫scrollToItems(at:,scrollPosition:). 他們要么不知道集合是空的,只是(row:0, item:0)作為索引路徑傳入,而不是完全跳過滾動呼叫。或者他們認為您的收藏至少包含一件物品。
為了進一步診斷問題,我要么在例外上設定斷點,要么在UIScrollView函式上設定斷點,然后查看回溯以查看誰在進行呼叫。
您還需要檢查您的資料源,以確保它在滾動發生時已使用正確數量的專案進行更新。
但是有一個回溯來找出誰或什么導致滾動視圖滾動將是一個很好的第一步。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/338915.html
標籤:迅速 代码 uicollectionview
上一篇:使WebSocket與RubyonRails、Puma和Nginx一起作業
下一篇:獲取與陣列分離的元素
