viewWithTag() Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • viewWithTag() Problem

    Hallo,

    aktuell versuche ich meiner TableView beizubringen das sie die bereits erzeugten Zellen bei einem refreshData wiederverwenden soll und ggf. neue hinzufügt wenn nötig. Ich wollte also die Funktion viewWithTag() verwenden um genau das zu erreichen jedoch will das nicht so recht klappen.

    Das Problem das ich nämlich habe ist das meine TableView bei jedem refreshData() immer neue Zellen zu den aktuell bestehenden hinzufügt weshalb ich dann immer die Fehlermeldung "Index is out of range" bekomme.

    Kann mir einer von euch vielleicht sagen was das Problem ist und was ich falsch mache ?

    Hier der Code:

    Quellcode

    1. for (questionIndex, data) in zip(0..<userData.userQuestions.count, questionData) {
    2. let questionImageView: UIImageView = UIImageView(image:nil)
    3. let index = questionIndex
    4. questionImageView.tag = index
    5. //Code zu Erstellung der Maske
    6. let overlay: UIView = UIView(frame: CGRect(x: 0, y: 200, width: cell.homeScrollView.frame.size.width/2 + 20, height: cell.homeScrollView.frame.size.height/4))
    7. overlay.backgroundColor = UIColor.black.withAlphaComponent(0.3)
    8. let questionLabel = UILabel(frame: CGRect(x: 0, y: 0, width: cell.homeScrollView.frame.size.width/2 , height: cell.homeScrollView.frame.size.height/4))
    9. questionLabel.text = data.questionTitle
    10. questionLabel.textColor = .white
    11. questionLabel.font = UIFont.boldSystemFont(ofSize: 14.0)
    12. questionLabel.center = overlay.center
    13. if let theQuestion = self.view.viewWithTag(questionImageView.tag) as? UIImageView {
    14. print(theQuestion)
    15. } else {
    16. questionImageView.addSubview(overlay)
    17. questionImageView.addSubview(questionLabel)
    18. cell.homeScrollView.addSubview(questionImageView)
    19. }
    20. }
    21. tableView.tableFooterView = UIView(frame: CGRect.zero)
    22. return cell
    23. }
    Alles anzeigen
  • Du solltest erst prüfen, ob es bereits einen ImageView mit dem tag gibt und nur wenn es noch keinen ImageView gibt einen neuen erzeugen und hinzufügen. ;)

    Weiterhin musst Du natürlich im Superview per viewWithTag() nach dem View suchen. In Deinem Fall also cell.homeScrollView, da Du den ImageView dort per addSubview() hinzugefügt hast. ;)

    Baue den Code mal um und melde Dich dann noch mal. :P