2010-04-26 11 views

risposta

19
[myCellButton addTarget:self action:@selector(myCellButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
+0

Ho aggiunto questa dichiarazione nel metodo didSelectRowAtIndexPath di UITableView, ma quando tocco su Button non si passa a didSelectRowAtIndexPath. Se tocco cella/riga di UITableView all'esterno del pulsante, viene inserito in didSelectRowAtIndexPath. Non capisco perché questo sta accadendo? ....... Come risolvere questo? –

+0

Si dovrebbe aggiungere questo target subito dopo la creazione di 'UIButton', quindi aggiungere il pulsante alla cella quando la cella viene inizializzata. Il metodo 'didSelectRowAtIndexPath' serve per rispondere al tocco della cella (riga) stessa, non del pulsante. Questa azione di destinazione è per il pulsante stesso. È più chiaro? –

+0

Voglio creare UIButton su ogni cella di UITabelView e quando clicco su quell'UIButton dovrebbe cambiare immagine su UIButton. Quindi, dove creare UIButton per ogni cella e il codice seguente in modo che funzioni per ogni UIButton su ogni cella di UITableView. [myCellButton addTarget: self action: @selector (myCellButtonPressed :) forControlEvents: UIControlEventTouchUpInside]; –

0

Se stai facendo tutto nel codice ...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];   
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [button setTitle:@"Button" forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(cellButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
     [button sizeToFit]; 
     [cell.contentView addSubview:button];   
    } 

    ... 

    return cell; 
} 

...

- (IBAction)cellButtonPressed:(id)sender 
{ 
    [sender setImage:[UIImage imageNamed:@"newImage"] forState:UIControlStateNormal]; 
} 

Ma vorrei suggerire utilizzare una sottoclasse UITableViewCell con delega.

Problemi correlati