2017-01-20 8 views
0

テーブルビューのアプリケーションで作業しています。テーブルビューには多くのデータが表示され、いくつかの行にはdetailTextlabelがクリックされたときにのみ表示されます。のみ表示し、データはテーブルビューでクリックしたときにのみ表示されます

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、上のテーブルビューの真ん中のため:

この

は、私はテーブルビューを作成するために使用しています extensionですデータをクリックすると

問題がcellForRowAtIndexPathまたは他の場所に依存するかどうかはわかりません。

TickersDataSourceは、主に配列を持つファイルです。

どのような考えですか?

ありがとうございます!

答えて

1

detailTextlabeltextColorは最初は背景と同じ色ですが、セルをクリック/ハイライトすると黒に変わりますか?

+0

こんにちは、私は 'cell.detailTextLabel?.textColor = UIColor.blackColor()'を同じものに追加しようとしました。それはあなたが提案したものでしたか? –

+0

はい、それは私の考えでした。 – raidfive

関連する問題