我有一系列这样的任务:
68 - Incontro - Incontro - 10/07/2017 - Incontro robot
69 - Compito - Matematica - 11/07/2017 - Pag 620 n.19
71 - Incontro - Incontro - 11/07/2017 -
70 - Interrogazione - Matematica - 12/07/2017 - da pag 200 a pag 230
第一个参数是ID,第二个是类型,第三个是主题,第四个是日期,最后一个是注释。
我想要一个表视图,显示我的数组中的每个元素,每个元素都在一个单元格中,并带有名称和注释,我希望所有单元格都有一个带有日期的标题。 我的课是这样的:
class TasksViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
func numberOfSections(in tableView: UITableView) -> Int {
return MenuViewController.tasksArray.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 45
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 10
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! CustomHeaderCellTableViewCell
headerCell.backgroundColor = UIColor.cyan
headerCell.headerLabel.text = MenuViewController.tasksArray[0].date
return headerCell
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
tableView.rowHeight = 70
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell.backgroundColor = funzioni.hexStringToUIColor(hex: "#e5e5ec")
cell.textLabel?.text = MenuViewController.tasksArray[indexPath.row].subject
cell.detailTextLabel?.text = MenuViewController.tasksArray[indexPath.row].comment
return cell
}
}
我的问题是每次第一个任务都会显示。 当我在tableView中查看时,我也不想移动标题,如图所示:
答案 0 :(得分:2)
首先,您始终显示第一个任务,因为您总是通过此代码要求第一个任务
headerCell.headerLabel.text = MenuViewController.tasksArray[0].date
为了使其正确,您需要根据单元格的当前索引获取任务,这意味着
headerCell.headerLabel.text = MenuViewController.tasksArray[section].date
其次,要使标题跟随您的单元格,您需要将表格视图样式设置为分组,如下所示
对于标签,请更改以下代码
cell.textLabel?.text = MenuViewController.tasksArray[indexPath.row].subject
cell.detailTextLabel?.text = MenuViewController.tasksArray[indexPath.row].comment
向
cell.textLabel?.text = MenuViewController.tasksArray[indexPath.section].subject
cell.detailTextLabel?.text = MenuViewController.tasksArray[indexPath.section].comment
每个部分有一个单元格。所以每个部分中的行总是为0.这就是为什么你一遍又一遍地获得相同的标签。