截面视图中的所有单元格都没有被返回

all of the cells in section view are not being returned

我已将我的表格视图 属性 连接到我的 viewcontroller class,但是我无法将所有单元格都连接到这些部分中的 return。我希望每个单元格之间有 10pix 的边距,并且能够在另一个 VC 中成功地做到这一点,但是现在我使用的方法只是 returning 一个单元格(总共只有 2 个单元格)所以我希望帮助找出显示该部分中所有单元格的方法,代码如下:

  //UITableViewDataSource

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()

    headerView.layer.cornerRadius = 8.0
    headerView.layer.masksToBounds = true
    headerView.backgroundColor = UIColor.colorWithHex("A171FF")

    let headerLabel = UILabel(frame: CGRect(x: 30, y: 0, width:
        tableView.bounds.size.width, height: tableView.bounds.size.height))
    headerLabel.font = UIFont(name: "Gill Sans", size: 15)
    headerLabel.textColor = UIColor.white
    headerLabel.text = self.tableView(self.myWldTbl, titleForHeaderInSection: section)
    headerLabel.sizeToFit()
    headerView.addSubview(headerLabel)

    return headerView
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    return sections[section]
}

func numberOfSections(in tableView: UITableView) -> Int {
    return sections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch (section) {
    case 0 :
    return userMoves.count
    case 1:
    return rsvps.count
    default :
    print("unable to set up sections")
    return 0
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.row % 2 != 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MyWorldTableViewCell.self)) as! MyWorldTableViewCell

       //cell appearance
        cell.layer.cornerRadius = 8.0
        cell.clipsToBounds = true

       //cell data
    let evt = userMoves[indexPath.row]
    cell.rsvpCount.text = "\(rsvps.count)"

    //evt img
    if let evtImg = evt.event_photo_url {
        cell.img.kf.setImage(with: URL(string: Constants.Server.PHOTO_URL + evtImg))
    } else {
        cell.img.image = UIImage(named: "user_icon")
    }
    cell.ttl.text = evt.event_name!

    return cell } else  {
        let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: InvisibleCell.self)) as! InvisibleCell

        cell.backgroundColor = UIColor.clear

        return cell
    }
}


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if indexPath.row % 2 == 0 {
        return 10.0
    }

    return 102.0
}

//UITableViewDelegate


func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 30
}

已编辑:

首先让您的代码感到困惑的是,您似乎有 2 个部分显示 2 个不同数组的内容(根据 numberOfRowsInSection 中的逻辑),但您没有检查部分编号在 cellForRowAt.

首先,您应该检查 cellForRowAt 中的 indexPath.section 以确保您使用的是正确的数组。如所写,您的代码使用 userMoves 数组来填充这两个部分。

您丢失单元格的原因是您必须在 numberOfRowsInSection 方法中考虑不可见的分隔单元格。你乘以 2 的想法是正确的:

switch (section) {
    case 0 :
        return userMoves.count * 2
    //etc
}

访问数组时,在cellForRowAt中需要除以2,避免索引越界异常:

if indexPath.row % 2 != 0 {
    //dequeue, etc.

    let evt = userMoves[indexPath.row / 2]

    //etc.
}