2012-09-26 12 views
19

Ho un pulsante e tabella. Ora voglio fare clic in modo tale che ogni volta che seleziono una riga in tableview e prema il pulsante, quel particolare evento premere il tasto potrebbe accadere. Per questo, in primo luogo ho dare tag per ogni riga cioèClic su evento in UITableView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *LabelCellIdentifier = @"cell"; 
UITableViewCell *cell; 
cell = [tableView dequeueReusableCellWithIdentifier:LabelCellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:LabelCellIdentifier]; 


} 

if (indexPath.row <= [_arrayMp3Link count]) { 

    cell.textLabel.text = [_arrayMp3Link objectAtIndex:indexPath.row]; 

    } 

// now tag each row 
NSInteger count = 1; 
for (NSInteger i = 0; i < indexPath.section; i++) { 
    count += [[tableView dataSource] tableView:tableView numberOfRowsInSection:i]; 
} 
count += indexPath.row; 
// dequeue, create and configure... 
cell.tag = count; 



return cell; 
} 

e ora nel mettere evento nel pulsante quando seleziono la riga e premere il tasto. Ma non ottenere le cose corrette.

(IBAction)doDownload:(id)sender { 
// to select first row 
if(cell.tag==1) 
{ 
    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
} 
+0

È possibile ottenere la riga nella IBAction. Controlla la mia risposta qui: http://stackoverflow.com/a/12594183/1144632 – danielbeard

risposta

29

dichiarare una variabile int a livello globale -

int rowNo; 

Poi assegnare il valore ad essa in didSelectRowAtIndexPath: metodo

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    rowNo = indexPath.row; 
} 

Ora avete la STI. della riga selezionata.

-(IBAction)doDownload:(id)sender 
{ 
    //Now compare this variable with 0 because first row index is 0. 
    if(rowNo == 0) 
    { 
     [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
    } 
} 
+0

ok grazie! e se vuoi la stessa azione con ogni riga..do ho bisogno di usare index path.section ?? e cosa in download? – Christien

+0

Quante sezioni hai ??? – TheTiger

+0

solo uno ....... – Christien

5

È necessario utilizzare la funzione didSelectRowAtIndexPath metodo di tableView.

in tale metodo si salva il tag riga selezionato o qualsiasi altra cosa si desidera salvare.e nell'azione del pulsante controllare il valore dell'entità salvata e fare qualsiasi cosa.

+0

k ma per selezionare una riga e per premere il tasto che cosa ho bisogno di usare – Christien

+0

se si desidera l'azione quando si seleziona la riga della tabella, che è meglio, quindi è possibile controllare il tag della cella all'interno del didiSelectRowAtIndexPath func e fare ciò che si vuole.Ma se si deve usare la selezione e premere entrambi, quindi utilizzare entrambi. – tausun

2
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if(indexPath.row==i) 
{//Perform whatever action you would like for whichever row number..i'm just using i as an int placeholder 
    [[UIApplication sharedApplication]openURL:[NSURLWithString:@"http://www.google.com"]]; 
} 

//Or you could perform the same action for all rows in a section 
if(indexPath.section==i) 
{ 
[[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"http://www.google.com"]]; 

} 
+0

ya grazie uomo! ma voglio ogni volta che seleziono una riga e clic sul pulsante che ho dato separatamente. – Christien

+0

Scusa, non capisco. Stai dicendo che vuoi essere in grado di fare la stessa cosa se fai clic sul pulsante e sulla riga? O cosa stai cercando di fare? –

+0

grazie. Ho capito ... per favore controlla se ho usato il codice giusto per taggare ogni riga. – Christien

3

utilizzare la funzione di origine dati UITableView che è

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{}

che indexPath.row è indice di ogni riga.

+0

ya grazie mamma! ma voglio ogni volta che seleziono una riga e clic sul pulsante che ho dato separatamente – Christien

+0

Quando selezioni una riga, vuoi che anche il pulsante sia selezionato? Ho ragione? – KarenAnne

1
//use selectedrow to check the condition 

-(void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

        selectedrow=indexPath.row; 
    } 

     -(IBAction)doDownload:(id)sender { 
     // to select first row 
     if(selectedrow==1) 
     { 
      [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
     } 
+0

grazie amico! quello funziona davvero per me! – Christien

2

'l'intervista-2.jpg' è il nome di un file di immagine

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    ViewController *vc = [sb instantiateViewControllerWithIdentifier:@"viewc"]; 

    [self.navigationController pushViewController:vc animated:YES]; 
    [vc setImageName:@"the-interview-2.jpg"]; 
} 
Problemi correlati