2017-12-29 32 views
0

Hier muss ich diese Seite implementieren, wie hier im Bild gezeigt, dass ich eine Tabellenansicht und eine Sammlungsansicht platzierte, aber hier, wenn ich die bestimmte Kategorie auswähle, dann wie die gewählte Schriftgröße größer und die Schriftfarbe geändert werden muss wie im Bild gezeigt, aber nach dem Ausführen der App, wenn ich den Bildschirm zu öffnen, um zu dieser Zeit erste Standard auswählen sollte es ausgewählt werden, dass What's New und später muss es zu dem, was ich ausgewählt wurde kann mir jemand helfen, wie dies zu lösen?Wie können Schriftfarbe und Schriftgröße des ausgewählten Index in der Tabellenansicht erhöht werden?

Hier ist mein Bildschirm, der wie sein entworfen:

enter image description here

Hier ist meine entworfen Bildschirm und in dem Problem darin:

enter image description here

hier Mein Code, den ich bereits ausprobiert habe

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "categoriesTableCell", for: indexPath) as! categoriesTableViewCell 
    if indexPath.row == currentSelection { 
    let item = categoriesModelClass?.childrenData[indexPath.row] 
    cell.categoriesProductsLabel.font = UIFont(name:"Bold", size:17) 
    cell.categoriesProductsLabel.textColor = UIColor.black 
    let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue] 
    let underlineAttributedString = NSMutableAttributedString(string: (item?.name)! , attributes: underlineAttribute) 
      underlineAttributedString.addAttribute(NSUnderlineColorAttributeName, value: UIColor.cyan, range: NSRange(location: 0, length: (item?.name?.characters.count)!)) 
      cell.categoriesProductsLabel.attributedText = underlineAttributedString 
    } 
    else { 
      let item = categoriesModelClass?.childrenData[indexPath.row] 
      print(item?.name) 
      cell.categoriesProductsLabel.textColor = UIColor.darkGray 
      //cell.categoriesProductsLabel.font = UIFont.init(name: "Regular", size: 12) 
      cell.categoriesProductsLabel.text = item?.name 
    } 
    return cell 
} 
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let previousSelection = self.currentSelection 
    self.currentSelection = indexPath.row 
    self.categoriesCollectionView.reloadData() 
    print(indexPath.row) 
    if previousSelection == 0 { 
     sideTableView.reloadRows(at: [indexPath], with: .none) 
    } 
    else { 
     let prevIndexPath = IndexPath(row: previousSelection, section: 0) 
     self.sideTableView.reloadRows(at: [prevIndexPath,indexPath], with: .none) 
    } 
} 

Antwort

0

Überschreibung setSelected Methode in Ihren categoriesTableViewCell Klassen wie diese und werden nicht aktualisiert, in cellForRowAt oder didSelectRowAt

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 
    if selected{ 
     categoriesProductsLabel.font = UIFont(name:"Bold", size:17) 
     categoriesProductsLabel.textColor = UIColor.black 

    }else{ 
     categoriesProductsLabel.textColor = UIColor.darkGray 
     categoriesProductsLabel.font = UIFont.init(name: "Regular", size: 12) 

    } 
} 
+0

es auch nicht funktioniert @ Schneider – User

0

Ovveride DidSelectRowAtIndexPath und didDeselectRowAtIndexPath beiden Methoden zu ändern und Schriftgröße wiederherstellen und Farbe

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
      //get cell with indexpath 
    cell.categoriesProductsLabel.font = UIFont(name:"Bold", size:17) 
    cell.categoriesProductsLabel.textColor = UIColor.black 

} 
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
    //get cell with indexpath 
    cell.categoriesProductsLabel.textColor = UIColor.darkGray 
    cell.categoriesProductsLabel.font = UIFont.init(name: "Regular", size: 12) 

}  
+0

Dieser Code Ich habe bereits versucht, aber hat nicht funktioniert – User

+0

, wenn diese Lösung nicht funktioniert, dann verwenden Sie die gleichen Sie veröffentlicht, aber Zelle reference Array beibehalten oder erstellen Sie andere dequeue-Kennung für ausgewählte und nicht ausgewählte Zellen. Laden Sie alle Tabellen in didSelectRowAtIndexPath neu. –

0

Sie h ave, wenn die Bedingung und den Code zu aktualisieren, wird auch funktionieren, wie Sie wollen: -

Ersetzen Sie diese ein: -

if previousSelection == 0 { 
    sideTableView.reloadRows(at: [indexPath], with: .none) 
} 
else { 
    let prevIndexPath = IndexPath(row: previousSelection, section: 0) 
    self.sideTableView.reloadRows(at: [prevIndexPath,indexPath], with: .none) 
} 

mit dieser: -

let prevIndexPath = IndexPath(row: previousSelection, section: 0) 
    self.sideTableView.reloadRows(at: [prevIndexPath,indexPath], with: .none) 
Verwandte Themen