3 Spalten TableCell Layout mit Werte füllen

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

  • 3 Spalten TableCell Layout mit Werte füllen

    Hallo zusammen,

    ich habe eine UITableCell welche 3 Spalten beinhaltet. Nun bekomm ich ein Array mit 5 Werten die auf die 3 Spalten verteilt werden sollen. Sind die Spalten voll, soll es in einer neuen TableRow weitergehen.

    Die Anzahl der Table Rows berechne ich wie folgt:

    PHP-Quellcode

    1. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    2. {
    3. NSMutableArray *values = [... getValues];
    4. int no=0;
    5. if (perspectives) {
    6. no=(values.count+1)/3;
    7. }
    8. else{
    9. no=0;
    10. }
    11. return no;
    12. }
    Alles anzeigen


    Das Problem dabei ist, dass ich nur 2 Iterationen (2 TableRows) zur Verfügung habe und es nicht hinbekommen hab mir daraus die Indexe des Arrays zu berechnen. Das ganze soll ja auch bei 7,8,9,...21,22, n Wert immer noch funktionieren.

    Bsp 5 Werte:

    indexPath.row = 0: Arr[0] | Arr[1] | Arr[2]
    indexPath.row = 1: Arr[3] | Arr[4] |

    Ich habe mit %3 und dem indexPath.row bisher versucht mir die Indexe des Arrays zu berechnen, bin aber auf nichts brauchbares gekommen ... Das ganze spielt sich in der cellForRowAtIndexPath-Methode ab.

    Hat jemand vllt. irgendeine Idee wie man das Lösen könnte?

    Vielen Dank & Grüße,
    mybecks
  • Wenn die Werte in einem Array stehen, dann kannst Du die Datasourcemethoden so implementieren: Die Anzahl der Zeilen ist ([array count] + 2) / 3 (Integerdivision) und über die Elemente in der i-ten Zeile iterierst Du mit:

    Quellcode

    1. NSInteger theCount = [self tableView:inTableView numberOfRowsInSection:inIndexPath.section];
    2. NSInteger theStart = inIndexPath.row * 3;
    3. NSInteger theEnd = min(theStart + 3, theCount);
    4. for(int i = theStart; i < theEnd; ++i) {
    5. ...
    6. }
    „Meine Komplikation hatte eine Komplikation.“
  • Hallo,

    @matz: klar wäre es so einfacher ;)

    @macmoonshine:

    Danke für deine Antwort. Läuft wunderbar, nur das ich theCount angepasst habe mit der Anzahl Elemente im Array.
    Innerhalb der for kann ich nun schön mit modulo prüfen (0 links, 1 center, 2 rechts) und dementsprechend anordnen :)


    Vielen Dank.

    :thumbup: