2017-01-20 63 views
0

我正在使用表視圖的應用程序。表格視圖顯示了大量的數據,並且在幾行中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

是否有可能您的textColordetailTextlabel與最初的背景顏色相同,然後在您單擊/突出顯示該單元格時變爲黑色?

+0

嗨@raidfive,我試圖添加'cell.detailTextLabel?.textColor = UIColor.blackColor()'發生同樣的事情。這是你建議的嗎? –

+0

是的,那是我的想法。 – raidfive

相關問題