2013-02-07 13 views

Antwort

26

Unten Methode wird der letzte Index der Sie Tabellenansicht zu finden und zu dieser Zelle mit einer Animation konzentrieren

-(void)goToBottom 
{ 
    NSIndexPath *lastIndexPath = [self lastIndexPath]; 

    [<YOUR TABLE VIEW> scrollToRowAtIndexPath:lastIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
} 

-Code den letzten Index Ihrer Tableview zu finden.

-(NSIndexPath *)lastIndexPath 
{ 
    NSInteger lastSectionIndex = MAX(0, [<YOUR TABLE VIEW> numberOfSections] - 1); 
    NSInteger lastRowIndex = MAX(0, [<YOUR TABLE VIEW> numberOfRowsInSection:lastSectionIndex] - 1); 
    return [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex]; 
} 

Fügen Sie diesen Code irgendwo in Ihrem View-Controller

[self performSelector:@selector(goToBottom) withObject:nil afterDelay:1.0]; 
+2

dank Kumpel ..... Arbeiten groß ........ :) –

+0

Dank funktioniert gut ... :) – jaydev

+0

funktioniert wie ein Champ – iLearner

2

Beachten Sie, dass ein UITableView von UIScrollView erbt

-(void)scrollToBottom:(id)sender 
{ 
    CGSize r = self.tableView.contentSize; 
    [self.tableView scrollRectToVisible:CGRectMake(0, r.height-10, r.width, 10) animated:YES]; 
} 

es ausführen wie

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(…); 
[button addTarget:self action:@selector(scrollToBottom:) forControlEvents:UIControlEventTouchUpInside]; 

(You dont performSelector:… verwenden müssen)


wäre eine andere Lösung, die die letzte Zeile auswählen werden. Die Tabellenansicht kümmert sich um den Rest.

-(void)scrollToBottom:(id)sender 
{ 
    NSInteger lasSection = [self.tableView numberOfSections] - 1; 
    NSInteger lastRow = [self.tableView numberOfRowsInSection:lasSection]-1; 

    //this while loops searches for the last section that has more than 0 rows. 
    // maybe you dont need this check 
    while (lastRow < 0 && lasSection > 0) { 
     --lasSection; 
     lastRow = [self.tableView numberOfRowsInSection:lasSection]-1; 
    } 
    //if there is no section with any row. if your data source is sane, 
    // this is not needed. 
    if (lasSection < 0 && lastRow < 0) 
     return; 

    NSIndexPath *lastRowIndexPath =[NSIndexPath indexPathForRow:lastRow inSection:lasSection]; 
    [self.tableView selectRowAtIndexPath:lastRowIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 

der Knopf ist der selbe.

+0

sehe meine Bearbeitung zum Scrollen durch Auswahl. – vikingosegundo

+0

behoben einige kleinere Fehler. Beachten Sie, dass Sie, wenn Sie sicher sind, dass Ihre 'numberOfRowsInSection' immer einen Wert von 1 oder höher zurückgibt, die while-Anweisung und die folgende if-Anweisung entfernen können. – vikingosegundo

+0

Diese Lösung benötigt ein Klickereignis, um zur letzten Zelle zu gehen. Sie können den performSelector mit Verzögerung verwenden, um nach dem Laden der gesamten Tabellenansicht zur letzten Zelle zu wechseln. –

0

Swift 3:

let indexPath = IndexPath(row: /*ROW TO SCROLL TO*/, section: /*SECTION TO SCROLL TO*/) 
tableView.scrollToRow(at: indexPath, at: .bottom, animated: true) 
Verwandte Themen