2016-04-06 3 views
0

Ich möchte eine Nummer zu jeder Zelle in der Tabellenansicht, und ich habe verschiedene Abschnitt so kann nicht indexPath.row verwenden.Auto Inkrement zu jeder Zelle in verschiedenen Abschnitt Tabelle

Momentan verwende ich eine Variable count und erhöht sie in cellForRowAtIndexPathcount++.

aber es aktualisiert, wenn im Scroll-Tabelle.

SO wie man die automatische Inkrementierungsnummer für jede Zelle einstellt.

+0

Ich verstehe Ihre Frage nicht, aber es wird auf das Ändern der Modelldaten und Erzwingen einer Tabellenaktualisierung kommen. – trojanfoe

+1

Verwenden Sie 'indexPath.section' anstelle von' indexPath.row' für Ihre 'count' Variable –

+0

Verwenden Sie' static' Variable. –

Antwort

2

das Anprobieren cellForRowAtIndexPath .. Wird vorherigen Abschnitten und seine Reihe berechnen und fügt mit aktuellen Zeile

NSInteger cellNumber = indexPath.row; 
    for (int i =0; i<indexPath.section; i++) { 
     cellNumber += [tableView numberOfRowsInSection:i]; 

    } 
1

Die Instanzvariable wird nicht funktionieren. Ihr Index sollte kalkulierbar sein, wie Ihr Problem angibt, aus dem IndexPfad (Zeile und Abschnitt), innerhalb von cellForRowAtIndexPath.

Try this:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"]; 

    NSInteger count = 0; 

    for (NSInteger sec=0; sec < indexPath.section; sec++) { 

     NSInteger rows = [tableView numberOfRowsInSection:sec]; 
     count += rows; 
    } 

    count += indexPath.row + 1; 

    NSLog(@"Current row is: %ld", (long)count); 

    return cell; 
} 
0

Kopieren und fügen Sie den Code: -

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 

if (cell == nil) { 
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 
           reuseIdentifier:@"Cell"]; 
} 

// Configure the cell... 
NSInteger cellNumber = indexPath.row; 
for (int i =0; i<indexPath.section; i++) { 
    cellNumber += [tableView numberOfRowsInSection:i]; 
} 
cell.textLabel.text = [NSString stringWithFormat:@"%ld", (long)cellNumber]; 

return cell; 
} 
+1

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –

+0

Es ist im Grunde die akzeptierte Antwort mit Kode-Code um sie herum. – trojanfoe

0

eine Kombination aus

NSString *string = [NSString stringWithFormat:@"%@%@",@(indexPath.section),@(indexPath.row)]; 
cell.tag = [string intValue]; 

Sie immer eine eindeutige Nummer erhalten werde versuchen, dass können Sie Verwenden Sie als Referenz.

Verwandte Themen