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 thiscell.lbl_nombreEmpresa.text = self.obj_empresa?[indexPath.item].nombre_emp

我没有错误,但我的屏幕只显示像第二张图片

第一张图片

第二张图片

提前致谢

您显然没有正确实施 cellForRowAt。您还需要在条件中使用 indexPath.section 。还要确保您正在实施 numberOfSections 数据源方法。