只有在tableview中单击时才会显示数据

时间:2017-01-20 17:19:25

标签: ios swift uitableview tableview

我正在使用具有表格视图的应用程序。表格视图显示了大量数据,只有当我点击它时,才显示detailTextlabel

这是我用来创建表格视图的extension

extension TicketViewController: UITableViewDelegate, UITableViewDataSource {

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch section {
    case 0:
        return TicketsDataSource.sharedInstance.storesPR.count
    case 1:
        return TicketsDataSource.sharedInstance.storesRJ.count
    case 2:
        return TicketsDataSource.sharedInstance.storesSC.count
    case 3:
        return TicketsDataSource.sharedInstance.storesSP.count
    default:
        return 0
    }
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 4
}

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

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 30
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)

    switch indexPath.section {
    case 0:
        cell.textLabel?.text = TicketsDataSource.sharedInstance.storesPR[indexPath.row]
        cell.detailTextLabel?.text = TicketsDataSource.sharedInstance.addressPR[indexPath.row]
    case 1:
        cell.textLabel?.text = TicketsDataSource.sharedInstance.storesRJ[indexPath.row]
        cell.detailTextLabel?.text = TicketsDataSource.sharedInstance.addressRJ[indexPath.row]
    case 2:
        cell.textLabel?.text = TicketsDataSource.sharedInstance.storesSC[indexPath.row]
        cell.detailTextLabel?.text = TicketsDataSource.sharedInstance.addressesSC[indexPath.row]
    case 3:
        cell.textLabel?.text = TicketsDataSource.sharedInstance.storesSP[indexPath.row]
        cell.detailTextLabel?.text = TicketsDataSource.sharedInstance.addressesSP[indexPath.row]
    default:
        cell.textLabel?.text = ""
        cell.detailTextLabel?.text = ""
    }

    cell.textLabel?.textColor = UIColor.whiteColor()
    cell.textLabel?.font = UIFont.systemFontOfSize(12)

    // While loops to fulfill the tableview
    // Cities of Paraná
    var i = 0
    while i < dataSingleton.citiesPR.count {
        setCell(cell, text: dataSingleton.citiesPR[i])
        i += 1
    }

    // Cities of Rio de Janeiro
    i = 0
    while i < dataSingleton.citiesRJ.count {
        setCell(cell, text: dataSingleton.citiesRJ[i])
        i += 1
    }

    // Fixing bug where SÃO JOÃO DE MERITI was not being displayd differently
    if cell.textLabel?.text == "SÃO JOÃO DE MERITI" {
        cell.textLabel?.font = UIFont.systemFontOfSize(16)
        cell.textLabel?.textColor = UIColor.blackColor()
    }

    // Cities of Santa Catarina
    i = 0
    while i < dataSingleton.citiesSC.count {
        setCell(cell, text: dataSingleton.citiesSC[i])
        i += 1
    }

    // Cities of São Paulo
    i = 0
    while i < dataSingleton.citiesSP.count {
        setCell(cell, text: dataSingleton.citiesSP[i])
        i += 1
    }

    return cell
}

private func setCell(cell: UITableViewCell, text: String) {
    if cell.textLabel?.text == text {
        cell.textLabel?.font = UIFont.systemFontOfSize(16)
        cell.textLabel?.textColor = UIColor.blackColor()
    }
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: false)
}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    var label = ""
    switch section {
    case 0:
        label = TicketsDataSource.sharedInstance.states[0]
    case 1:
        label = TicketsDataSource.sharedInstance.states[1]
    case 2:
        label = TicketsDataSource.sharedInstance.states[2]
    case 3:
        label = TicketsDataSource.sharedInstance.states[3]
    default:
        label = ""
    }

    return label
}

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    if let header = view as? UITableViewHeaderFooterView {
        header.textLabel!.font = UIFont.systemFontOfSize(18)
        header.textLabel!.textColor = UIColor.whiteColor()
    }
}

}

As you guys can see, the <code>detailTextLabel</code>, for the middle of the table view on, only displays the data when I click on it

正如大家可以看到的那样,detailTextLabel,在表格视图的中间,只显示我点击它时的数据。

我不确定问题是否依赖于cellForRowAtIndexPath或其他地方。

TickersDataSource主要是带数组的文件。

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

textColor的{​​{1}}是否与最初的背景颜色相同,然后点击/突出显示单元格时会变为黑色?