2009-10-26 6 views
5

Ho bisogno di aggiungere una nuova riga in tableview quando seleziono una riga nella tabella.Aggiungere una riga dinamicamente in TableView di iphone

Suppongo di utilizzare il seguente metodo ???

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

Che cosa devo scrivere all'interno del metodo per aggiungere una nuova riga?

Si prega di aiutarmi,

Grazie in anticipo Shibin.

risposta

2

Se state caricando il vostro tavolo da un array, si può semplicemente aggiungere un elemento per l'array e chiamare [myTable reloadData]

+0

no, non sto caricando i dati della nuova riga da un array. quello di cui ho bisogno è aggiungere una nuova riga quando seleziono una particolare riga nella tabella. viene semplicemente aggiunto al mio tavolo esistente. – smakstr

+0

Hmm. E qual è la fonte per il tuo contenuto di visualizzazione tabella? – Morion

+1

È possibile modificare solo il numero di elementi restituiti da numberOfRowsInSection e aggiornare i dati restituiti da cellForRowAtIndexPath in modo appropriato. Quindi chiama reloadData come sopra. –

13

Quando aggiungere una riga in modo dinamico, io uso insertRowsAtIndexPaths: qui è un esempio di funzione

- (void) allServersFound { 
    // called from delegate when bonjourservices has listings of machines: 
    bonjourMachines = [bonjourService foundServers]; // NSArray of machine names; 

    NSMutableArray *tempArray = [[NSMutableArray alloc] init]; 

    int i = 0; 
    for (NSArray *count in bonjourMachines) { 
     [tempArray addObject:[NSIndexPath indexPathForRow:i++ inSection:0]]; 
    } 

    [[self tableView] beginUpdates]; 
    [[self tableView] insertRowsAtIndexPaths:(NSArray *)tempArray withRowAnimation:UITableViewRowAnimationNone]; 
    [[self tableView] endUpdates]; 

    [tempArray release]; 
} 
1

dati ricarica è bello e semplice, ma non anima, per quanto posso dire ...

0

reloadData può aggiungere riga nella visualizzazione teble, ma se volete un po 'di animazione quando fila aggiungere quindi si dovrebbe utilizzare queste linee di codice.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     NSMutableArray *tempArray = [[NSMutableArray alloc] init]; 
     [tempArray addObject:[NSIndexPath indexPathForRow:indexPath.row+1 inSection:0]]; 

     [mainArray insertObject:@"new row" atIndex:indexPath.row+1]; 

     [[self tableView] beginUpdates]; 
     [[self tableView] insertRowsAtIndexPaths:(NSArray *)tempArray withRowAnimation:UITableViewRowAnimationFade]; 
     [[self tableView] endUpdates]; 

} 
Problemi correlati