Hallo,
ich habe auf meiner App einen refresher eingebaut und jetzt das Problem das jedes mal wenn ich die Seite refreshen will, ich in meiner cellForRowAt Funktion für folgende Zeile die Fehlermeldung "Index out of Range" bekomme. Ich glaube auch zu wissen was das Problem ist und zwar füge ich meiner ScrollView über addSubview Bilder hinzu. Lade ich die Seite nun neu, werden der aktuellen View erneut Bilder hinzugefügt...
Zwar glaube ich zu wissen was das Problem ist, jedoch weiß ich nicht so recht wie ich es am besten beheben kann. Das Problem ist halt wie gesagt addSubview doch weiß einer von euch eventuell was man machen kann damit der aktuellen View die neuen Bilder nicht noch on Top hinzugefügt werden, diese einfach neu geladen wird ?
Aber hier nochmal der Code, habe ihn mehr auf das relevant Zeug gekürzt:
Alles anzeigen
Alles anzeigen
ich habe auf meiner App einen refresher eingebaut und jetzt das Problem das jedes mal wenn ich die Seite refreshen will, ich in meiner cellForRowAt Funktion für folgende Zeile die Fehlermeldung "Index out of Range" bekomme. Ich glaube auch zu wissen was das Problem ist und zwar füge ich meiner ScrollView über addSubview Bilder hinzu. Lade ich die Seite nun neu, werden der aktuellen View erneut Bilder hinzugefügt...
Zwar glaube ich zu wissen was das Problem ist, jedoch weiß ich nicht so recht wie ich es am besten beheben kann. Das Problem ist halt wie gesagt addSubview doch weiß einer von euch eventuell was man machen kann damit der aktuellen View die neuen Bilder nicht noch on Top hinzugefügt werden, diese einfach neu geladen wird ?
Aber hier nochmal der Code, habe ihn mehr auf das relevant Zeug gekürzt:
Quellcode
- func setQuestionData() {
- var request = URLRequest(url: baseURL)
- request.setValue(login_session, forHTTPHeaderField: "Authorization")
- request.httpMethod = "GET"
- let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
- guard let data = data else { return }
- let decoder = JSONDecoder()
- self.items = (try? decoder.decode(RootElement.self, from: data)) ?? RootElement()
- self.savedUsers.append(contentsOf: self.items.data)
- DispatchQueue.main.async {
- self.demoTableView.reloadData()
- }
- }
- task.resume()
- }
Quellcode
- else {
- guard let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionLine", for: indexPath) as? HomeTableViewCell else { fatalError()}
- let userData = items.data[indexPath.row]
- let questionData = userData.userQuestions //Muss getestet werden
- demoTableView.rowHeight = 335
- for (questionIndex, data) in zip(0..<userData.userQuestions.count, questionData) {
- let questionImageView: UIImageView = UIImageView(image:nil)
- let index = questionIndex
- for picture in data.questionImages {
- let imageToDisplay: URL? = URL(string: allQuestionPictureURL + picture)
- if let imageUrl = imageToDisplay {
- questionImageView.sd_setImage(with: imageUrl)
- }
- questionImageView.contentMode = .scaleAspectFill
- let xPosition = 230 * CGFloat(index)
- questionImageView.layer.cornerRadius = 10
- questionImageView.layer.borderWidth = 1
- questionImageView.layer.borderColor = UIColor.lightGray.cgColor
- questionImageView.layer.masksToBounds = true
- questionImageView.frame = CGRect(x: xPosition + 20, y: CGFloat(0), width: setWidthForScrollView, height: cell.homeScrollView.frame.size.height)
- cell.homeScrollView.contentSize.width = 240 * CGFloat(index + 1)
- }
- cell.homeScrollView.addSubview(questionImageView)
- }
- tableView.tableFooterView = UIView(frame: CGRect.zero)
- return cell
- }