UITableView中的单元格标题

时间:2017-07-10 13:22:33

标签: ios swift uitableview

我有一系列这样的任务:

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中查看时,我也不想移动标题,如图所示:

enter image description here

1 个答案:

答案 0 :(得分:2)

首先,您始终显示第一个任务,因为您总是通过此代码要求第一个任务

headerCell.headerLabel.text = MenuViewController.tasksArray[0].date

为了使其正确,您需要根据单元格的当前索引获取任务,这意味着

headerCell.headerLabel.text = MenuViewController.tasksArray[section].date

其次,要使标题跟随您的单元格,您需要将表格视图样式设置为分组,如下所示

enter image description here

对于标签,请更改以下代码

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.这就是为什么你一遍又一遍地获得相同的标签。