2013-12-16 12 views
12

Ho una sezione in UITableView che ha più righe. Desidero ottenere l'ultima riga o l'ultima cella della sezione per aggiungere un indicatore di divulgazione su di esso.Ottieni l'ultima cella in una sezione Uitableview

Un modo sto pensando di utilizzare è:

NSIndexPath *lastCellIndexPath = [NSIndexPath indexPathForItem:[self.tableView numberOfRowsInSection:2]-1 inSection:2]; 

C'è un altro modo migliore per ottenere la cella o indexpath dell'ultima cella su una sezione?

+0

si può ottenere dal vostro origine dati da cui si imposta in metodi delegato. –

risposta

39
NSInteger totalRow = [tableView numberOfRowsInSection:indexPath.section];//first get total rows in that section by current indexPath. 
    if(indexPath.row == totalRow -1){ 
     //this is the last row in section. 
    } 

spero che sia d'aiuto.

Ho fatto questo in tableView: willDisplayCell: forRowAtIndexPath: metodo

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 
1

È possibile scaricarlo dall'origine dati da cui è stato impostato in metodi delegati, l'origine dati che si assegna nel metodo numberOfRowsInSection.

[arrayStores lastObject];

così in cellForRowAtIndexPath metodo si può facilmente controllare,

3

Si dovrebbe fare questo all'interno del vostro metodo di cellForRowAtIndexPath. Puoi facilmente individuare a quale sezione appartiene questa cella e se è l'ultima.

6
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 

     //Section 0 
     if (indexPath.section == 0) { 

      // Is Last row? 
      if ([dataSouceArray count] == (indexPath.row+1)) { 
       //Yes 

       cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 


      } 
      else{ 
       // other rows 

       cell.accessoryType = UITableViewCellAccessoryNone; 

      } 


     } 


    } 
+0

Sei sicuro di non aver commesso errori di battitura in questa riga: '[NSIndexPath indexPathForRow: [NSIndexPath indexPathForRow:' ?? – sha

+0

E dove questo codice dovrebbe andare? – sha

+0

Si prega di verificare il codice ora –

0

mi chiedo come ho fatto manca. La soluzione più semplice è qui. Ho scritto nel metodo didSelectRowAtIndexPath in base alle mie esigenze.

if (indexPath.row ==userAccountsList.count-1) 
{ 
    NSLog(@"last row it is "); 
     } 

Nel codice precedente userAccountsList è un array che stiamo passando a tableview.

1

versione Swift:

var totalRow = tableView.numberOfRows(inSection: indexPath.section) 
//first get total rows in that section by current indexPath. 
if indexPath.row == totalRow - 1 { 
    //this is the last row in section. 
}