具有自定义单元格和多个节数组数据的Swift UITableView

时间:2019-08-01 09:09:28

标签: ios swift uitableview

我的场景,我正在尝试创建具有自定义单元格和单个数组中多个节的UITableView。在这里,我需要在各节中显示不同的标题。这该怎么做?我使用了下面的代码,但无法清楚地理解。

下面的我的代码

var  data = [["1","2","3"], ["4","5"]]
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return data.count
}

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

1 个答案:

答案 0 :(得分:2)

周围可能有2种情况,

  1. 如果您只是想向每个String添加 section标题,请实施UITableViewDataSource's tableView(_: titleForHeaderInSection:) 方法。

  2. 如果您要为每个view赋予自定义section ,请实施UITableViewDelegate's tableView(_:viewForHeaderInSection:) 方法。

这里是tableView(_: titleForHeaderInSection:)的示例,

class VC: UIViewController, UITableViewDataSource {
    let data = [["1","2","3"], ["4","5"]]
    let sectionNames = ["This is Sec-1", "And this is Sec-2"]

    func numberOfSections(in tableView: UITableView) -> Int {
        return data.count
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data[section].count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
        cell.textLabel?.text = data[indexPath.section][indexPath.row]
        return cell
    }

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return sectionNames[section]
    }
}

在每个tableView(_:heightForHeaderInSection:)需要自定义高度的情况下,请实施section

截屏:

enter image description here

编辑:

使用accessoryType作为.checkmark进行单元格选择。

以这种方式创建自定义UITableViewCelloverride setSelected(_:animated:)方法,

class CustomCell: UITableViewCell {
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        self.accessoryType = selected ? .checkmark : .none
    }
}

reuseIdentifierCustomCell的{​​{1}}中的xib设置为cell。另外,更新tableView(_:cellForRowAt:)方法以使CustomCell实例出队。我在上面的代码中进行了更新。