2017-01-20 10 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

Возможно ли, что ваш textColor для detailTextlabel имеет тот же цвет, что и исходный фон, а затем изменяется на черный, когда вы нажимаете/выделяете ячейку?

+0

Привет @raidfive, я попытался добавить 'cell.detailTextLabel? .textColor = UIColor.blackColor()' к тому же, что происходит. Это то, что вы предложили? –

+0

Да, это была моя мысль. – raidfive