我的场景,我正在尝试创建具有自定义单元格和单个数组中多个节的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
}
答案 0 :(得分:2)
周围可能有2种情况,
如果您只是想向每个String
添加 section
标题,请实施UITableViewDataSource's
tableView(_: titleForHeaderInSection:)
方法。
如果您要为每个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
。
截屏:
编辑:
使用accessoryType
作为.checkmark
进行单元格选择。
以这种方式创建自定义UITableViewCell
和override setSelected(_:animated:)
方法,
class CustomCell: UITableViewCell {
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.accessoryType = selected ? .checkmark : .none
}
}
将reuseIdentifier
中CustomCell
的{{1}}中的xib
设置为cell
。另外,更新tableView(_:cellForRowAt:)
方法以使CustomCell
实例出队。我在上面的代码中进行了更新。