swift 中的 collectionView 出现 NSInternalInconsistencyException 错误
NSInternalInconsistencyException error from collectionView in swift
嗨,我有两个不同的单元格(将来可能是 6-7 个)我在某些情况下在集合视图的 cellForItem 方法中 return 它们,但我得到了这个错误(单元格 returned from -collectionView:cellForItemAtIndexPath: 没有 reuseIdentifier - 必须通过调用检索单元格)
这是我的代码。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let idx = viewModel?.component?.firstIndex(where: { [=11=].type == .summary }) {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SummaryCollectionViewCell.identifier, for: indexPath) as? SummaryCollectionViewCell else { return UICollectionViewCell() }
if let summaryData = viewModel?.component?[idx].dataModel as? SummaryData {
let summaryViewModel = SummaryCollectionViewCellViewModel(summaryData: summaryData)
cell.configure(with: summaryViewModel)
}
} else if let idx = viewModel?.component?.firstIndex(where: { [=11=].type == .merchant }) {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MerchantCollectionViewCell.identifier, for: indexPath) as? MerchantCollectionViewCell else { return UICollectionViewCell() }
if let merchantData = viewModel?.component?[idx].dataModel as? MerchantData {
let merchantViewModel = MerchantCollectionViewCellViewModel(merchantData: merchantData)
cell.configure(with: merchantViewModel)
}
}
return UICollectionViewCell()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
说
是合法的
return UICollectionViewCell()
为了安静编译器,但是非法去执行它。你正在执行它,因为你的条件的两翼都不是 returning 单元格.
你两边都在说let cell =
,然后你就把cell
扔掉了!你永远不会说 return cell
。您必须使一个单元格出队,配置它, 和 return 它。不要 return 一些其他单元格; return 你出队配置的cell,即cell
.
嗨,我有两个不同的单元格(将来可能是 6-7 个)我在某些情况下在集合视图的 cellForItem 方法中 return 它们,但我得到了这个错误(单元格 returned from -collectionView:cellForItemAtIndexPath: 没有 reuseIdentifier - 必须通过调用检索单元格)
这是我的代码。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let idx = viewModel?.component?.firstIndex(where: { [=11=].type == .summary }) {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SummaryCollectionViewCell.identifier, for: indexPath) as? SummaryCollectionViewCell else { return UICollectionViewCell() }
if let summaryData = viewModel?.component?[idx].dataModel as? SummaryData {
let summaryViewModel = SummaryCollectionViewCellViewModel(summaryData: summaryData)
cell.configure(with: summaryViewModel)
}
} else if let idx = viewModel?.component?.firstIndex(where: { [=11=].type == .merchant }) {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MerchantCollectionViewCell.identifier, for: indexPath) as? MerchantCollectionViewCell else { return UICollectionViewCell() }
if let merchantData = viewModel?.component?[idx].dataModel as? MerchantData {
let merchantViewModel = MerchantCollectionViewCellViewModel(merchantData: merchantData)
cell.configure(with: merchantViewModel)
}
}
return UICollectionViewCell()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
说
是合法的return UICollectionViewCell()
为了安静编译器,但是非法去执行它。你正在执行它,因为你的条件的两翼都不是 returning 单元格.
你两边都在说let cell =
,然后你就把cell
扔掉了!你永远不会说 return cell
。您必须使一个单元格出队,配置它, 和 return 它。不要 return 一些其他单元格; return 你出队配置的cell,即cell
.