Hallo Community!
System:
Ich entwickle gerade eine App mit Xcode 11.3.1 und Swift 5.0.
Aufgabenstellung:
Ich habe ein Array welches Inhalte enthält. Aktuell zum testen sind es Strings - später werden es Objekte sein.
In einem zweiten Array ( aktuell ebenfalls Strings -> später Objekte )
Im dazugehörigen ViewController nutze ich die üblichen Verdächtigen als extension: numberOfRowsInSection & cellForRowAt indexPath.
Bei ersterem lasse ich mit return die länge des ersten Arrays ausgeben - welche mir die Anzahl der Cell's gibt.
Im zweiten prüfe ich ob im zweiten Array etwas drin ist - falls nicht gib mir nur den Inhalt des ersten Arrays in Cell's aus.
Falls doch etwas drin ist erhöhe eine variable um 1 und nimm diese Variable als index des Arrays um die Inhalte als Cell zu bauen und diese Cell immer als 5. anzuzeigen.
Soweit klappt es auch schon.
Mein Problem:
Es fehlt immer der erste Datensatz ( die erste Cell ) des ersten Arrays und der erste Tip ( aus dem Array für die Tips )
Screenshot:
Ich hänge noch einen Screenshot vom Simulator an der das Problem verdeutlicht.
Wenn ich jetzt mit der Maus ein paar mal rauf und runter swipe werden die Tips bunt gemischt und neu platziert und auch Tip 1 kommt irgendwann mal dran ...
Nur den ersten eigentlichen Inhalt sehe ich leider nicht ...
[Blockierte Grafik: https://www.jux-dollerei.com/forum/screen_1.png]
Code:
Alles anzeigen
Vielen Dank an alle die sich die Mühe machen ein Lösung zu posten / finden.
VG und bleibt alle gesund, Steffe
System:
Ich entwickle gerade eine App mit Xcode 11.3.1 und Swift 5.0.
Aufgabenstellung:
Ich habe ein Array welches Inhalte enthält. Aktuell zum testen sind es Strings - später werden es Objekte sein.
In einem zweiten Array ( aktuell ebenfalls Strings -> später Objekte )
Im dazugehörigen ViewController nutze ich die üblichen Verdächtigen als extension: numberOfRowsInSection & cellForRowAt indexPath.
Bei ersterem lasse ich mit return die länge des ersten Arrays ausgeben - welche mir die Anzahl der Cell's gibt.
Im zweiten prüfe ich ob im zweiten Array etwas drin ist - falls nicht gib mir nur den Inhalt des ersten Arrays in Cell's aus.
Falls doch etwas drin ist erhöhe eine variable um 1 und nimm diese Variable als index des Arrays um die Inhalte als Cell zu bauen und diese Cell immer als 5. anzuzeigen.
Soweit klappt es auch schon.
Mein Problem:
Es fehlt immer der erste Datensatz ( die erste Cell ) des ersten Arrays und der erste Tip ( aus dem Array für die Tips )
Screenshot:
Ich hänge noch einen Screenshot vom Simulator an der das Problem verdeutlicht.
Wenn ich jetzt mit der Maus ein paar mal rauf und runter swipe werden die Tips bunt gemischt und neu platziert und auch Tip 1 kommt irgendwann mal dran ...
Nur den ersten eigentlichen Inhalt sehe ich leider nicht ...
[Blockierte Grafik: https://www.jux-dollerei.com/forum/screen_1.png]
Code:
Quellcode
- class ViewController: UIViewController{
- @IBOutlet weak var tableView: UITableView!
- let array_inhalt = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]
- var array_tips = ["Tip 1", "Tip 2", "Tip 3", "Tip 4", "Tip 5"]
- var tipCount = 0
- override func viewDidLoad(){
- super.viewDidLoad()
- tableView.dataSource = self
- }
- }
- extension ViewController: UITableViewDataSource {
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return array_inhalt.count
- }
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as! tableViewCell
- // wenn array_tips nicht leer ist
- if self.array_tips.count != 0 {
- if (indexPath.row % 5 == 0) { // jede fünfte zeile soll ein tip sein
- if self.tipCount < self.array_tips.count{
- self.tipCount += 1
- }
- if self.tipCount == self.array_tips.count{
- self.tipCount = 0
- }
- // wenn es ein tip ist
- cell.textLabel?.text = "\(self.array_tips[self.tipCount])"
- } else {
- // wenn es normaler inhalt ist
- cell.textLabel?.text = "Inhalt \(array_inhalt[indexPath.row - (indexPath.row / 5)])"
- }
- } else {
- // wenn das array_tips leer ist
- cell.textLabel?.text = "\(array_inhalt[indexPath.row])"
- }
- // ausgabe
- return cell
- }
- }
VG und bleibt alle gesund, Steffe