swift 3 中的索引超出范围 uitableview
index out of range uitableview in swift 3
我做了以下屏幕,它有 5 个部分;在前 4 部分中,我将使用一个数组来显示一些信息,在最后一节中,我将使用它来显示带有第二个数组的画廊。
通常在方法 numberOfRowsInSection 中我正在 returning "return 5" 并且我的屏幕显示像第一张图片,当我更改为 return self.obj_empresa?.count 时? ? 0,只显示第一部分,如第二张图片。我该如何解决这个问题:
我的代码:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//Muestra el # de celdas a mostrar
//return 5 before showed the 5 sections
return self.obj_empresa?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.infoEmpresaCell, for: indexPath) as! InfoEmpresaCell
cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
cell.lbl_sloganEmpresa.text = "Subtitle"
cell.iv_perfilEmpresa.layer.cornerRadius = 10
cell.iv_perfilEmpresa.layer.masksToBounds = true
cell.selectionStyle = .none
return cell
}else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.redesSocialesEmpCell, for: indexPath) as! RedesSocialesEmpCell
cell.iv_facebook.isUserInteractionEnabled = true
let singletap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(visitar_facebook(singletap:)))
cell.iv_facebook.addGestureRecognizer(singletap)
cell.selectionStyle = .none
return cell
}else if indexPath.row == 2 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.ubEmpCell, for: indexPath)
return cell
}else if indexPath.row == 3 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.descEmpCell, for: indexPath) as! DescEmpCell
cell.lbl_descEmpresa.text = "Description"
cell.selectionStyle = .none
return cell
}else if indexPath.row == 4 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.promoEmpCell, for: indexPath) as! PromoEmpCell
cell.selectionStyle = .none
return cell
}
return UITableViewCell()
}
当我在我的 numberOfRowsInSection 中 return 5 并且我设置这个 cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
I get this "error index out of range" in my cellForRowAt indexPath but if I return this self.obj_empresa?.count ?? 0 and I set this
cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
我没有错误,但我的屏幕只显示像第二张图片
第一张图片
第二张图片
提前致谢
您显然没有正确实施 cellForRowAt。您还需要在条件中使用 indexPath.section 。还要确保您正在实施 numberOfSections 数据源方法。
我做了以下屏幕,它有 5 个部分;在前 4 部分中,我将使用一个数组来显示一些信息,在最后一节中,我将使用它来显示带有第二个数组的画廊。
通常在方法 numberOfRowsInSection 中我正在 returning "return 5" 并且我的屏幕显示像第一张图片,当我更改为 return self.obj_empresa?.count 时? ? 0,只显示第一部分,如第二张图片。我该如何解决这个问题:
我的代码:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//Muestra el # de celdas a mostrar
//return 5 before showed the 5 sections
return self.obj_empresa?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.infoEmpresaCell, for: indexPath) as! InfoEmpresaCell
cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
cell.lbl_sloganEmpresa.text = "Subtitle"
cell.iv_perfilEmpresa.layer.cornerRadius = 10
cell.iv_perfilEmpresa.layer.masksToBounds = true
cell.selectionStyle = .none
return cell
}else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.redesSocialesEmpCell, for: indexPath) as! RedesSocialesEmpCell
cell.iv_facebook.isUserInteractionEnabled = true
let singletap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(visitar_facebook(singletap:)))
cell.iv_facebook.addGestureRecognizer(singletap)
cell.selectionStyle = .none
return cell
}else if indexPath.row == 2 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.ubEmpCell, for: indexPath)
return cell
}else if indexPath.row == 3 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.descEmpCell, for: indexPath) as! DescEmpCell
cell.lbl_descEmpresa.text = "Description"
cell.selectionStyle = .none
return cell
}else if indexPath.row == 4 {
let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.promoEmpCell, for: indexPath) as! PromoEmpCell
cell.selectionStyle = .none
return cell
}
return UITableViewCell()
}
当我在我的 numberOfRowsInSection 中 return 5 并且我设置这个 cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
I get this "error index out of range" in my cellForRowAt indexPath but if I return this self.obj_empresa?.count ?? 0 and I set this
cell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp
我没有错误,但我的屏幕只显示像第二张图片
第一张图片
第二张图片
提前致谢
您显然没有正确实施 cellForRowAt。您还需要在条件中使用 indexPath.section 。还要确保您正在实施 numberOfSections 数据源方法。