2016-07-26 5 views
0

Ich habe eine Tabellenansicht. Es wird Chaos von Daten vom Server erhalten. Jedes Mal, wenn die Tabellenansicht Daten empfängt, möchte ich sie als letzte anzeigen. Ich rief scrollToRowAtIndexPath:atScrollPosition:animated: an, aber es lag an meiner App. Ich kann nichts anderes auf meinem Bildschirm tun, wenn ich zum Tabellenende blättern muss. Hier ist mein HauptcodeUITableView scrollToRowAtIndexPath: atScrollPosition: animiert: Lag meine App ernst

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *identifier = @"tableViewCell"; 

    DLtestCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; 
    } 
    NSDictionary* dict = arr[indexPath.row]; 
    cell.myLabel.attributedText = dict[@"content"]; 
    [cell.myImageview sd_setImageWithURL:dict[@"imageUrl"] placeholderImage:[UIImage imageNamed:@"transparentPlaceHolder"]];  
    return cell; 
} 

und hier ist an der unteren Hauptcode Scrolling

- (void)reloadTableView 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 

     NSIndexPath *lastRow = [NSIndexPath indexPathForRow:row inSection:0]; 
     [self.tableView insertRowsAtIndexPaths:@[lastRow] withRowAnimation:UITableViewRowAnimationLeft]; 
    }); 
     [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO]; 
} 
+0

versuchen, in Haupt-Thread (performOnMainThread) -Methode – SM18

Antwort

0

Sie scrollToRowAtIndexPath Methode verwenden sollten.

Und in viewWillAppear schreiben Sie unten Code.

Hier ist 'rowNumber' die Zeilennummer in der Datenquelle, zu der gescrollt werden soll.

oder Sie können 'rowNumber' wie folgt berechnen:

int lastRowNumber = [tableView numberOfRowsInSection:0] - 1; 

und diese lastRowNumber zu indexPathForRow passieren.

HINWEIS: numberOfRowsInSection gibt die Zeilenanzahl zurück, nicht die letzte Zeilennummer (also die Zeilenanzahl - 1).

+0

neu zu laden eigentlich mache ich so, aber es gibt Chaos von Datenzugriff, denn ich kann nichts betreiben –

Verwandte Themen