致命错误:索引超出范围的两个自定义单元格
Posted
技术标签:
【中文标题】致命错误:索引超出范围的两个自定义单元格【英文标题】:fatal error: Index out of range two custom cells 【发布时间】:2017-09-18 12:20:39 【问题描述】:我有两个自定义单元格
我是这样配置的
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if searchActive
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ShopTableViewCell
let entry1 = auxiliar?[indexPath.row]
cell.shopImage.hnk_setImage(from: URL(string: (entry1?.Logo)!))
cell.shopName.text = entry1?.shopname
cell.backgroundColor = UIColor(white: 1 , alpha : 0.5)
return cell
else
if filteredArr == nil
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ShopTableViewCell
let entry = shops[indexPath.row]
cell.shopImage.hnk_setImage(from: URL(string: entry.Logo))
cell.shopName.text = entry.shopname
cell.backgroundColor = UIColor(white: 1 , alpha : 0.5)
return cell
else
let cell2 = tableView.dequeueReusableCell(withIdentifier: "design", for: indexPath) as! DesignTableViewCell
let entry2 = filteredArr[indexPath.row]// error here
cell2.deignImage.hnk_setImage(from: URL(string: "http://jaee.com/upload/img/\(entry2.design)"))
cell2.backgroundColor = UIColor(white: 1 , alpha : 0.5)
return cell2
但我得到一个索引超出范围的错误。有人能帮我吗。我认为这是因为 numberOfRowsInSection
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if searchActive
return auxiliar!.count
return allShops.count
这是我保存数据的方式。我正在过滤商店。有设计的商店应该在design
单元格中,其余的应该在Cell
中。
var info = Shops(shopname: shopName, Logo: logoString, family_id: familiy_id , design : designImage )
self.shops.append(info)
self.filteredArr = self.shops.filter $0.design != nil
self.NofilteredArr = self.shops.filter $0.design == nil
self.allShops = self.NofilteredArr + self.filteredArr
更新 我想要的是设计单元仅位于顶部,而单元位于其下方。
【问题讨论】:
if searchActive return auxiliar!.count; else if filteredArr == nil return allShops.count else return filteredArr.count
因为这需要与cellForRow()
中实现的逻辑相同(或cellForRow()
必须与numberOfRowsInSection
中的逻辑相同)。
索引超出范围错误发生在哪里? searchActive 是真是假?
检查更新的问题。细胞只是设计细胞
【参考方案1】:
试试这个。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if searchActive
return auxiliar!.count
else
if filteredArr == nil
shops.count
else
filteredArr.count
我认为你的 allShops 是零。
【讨论】:
检查更新的问题。细胞只是设计细胞 @leo0019 索引超出范围错误发生在哪里?请告诉我。 它不再发生了。看看我在我的问题中更新的图像。单元格都是一种颜色,当我点击它时,我会去选定的商店。显示有设计的单元格,但没有的单元格是粗体(Cell
不显示)【参考方案2】:
在 cellForRowAt: 方法中你有:
if searchActive
...
else
if filteredArr == nil
...
else
...
但是在 numberOfRowsInSection: 你有
if searchActive
...
return ...
您可能希望在这两种方法中实现相同的逻辑。
【讨论】:
检查更新的问题。细胞只是设计细胞以上是关于致命错误:索引超出范围的两个自定义单元格的主要内容,如果未能解决你的问题,请参考以下文章
删除 UITableView 中的最后一个单元格时索引超出范围