ufw ufw - 20 days ago 7
iOS Question

iPhone SDK: Opening a cell with a dedicated button, not by cell tapping

I have a simple TableView containing several cells. Normally, I switch to selected cell details by tapping this cell. But what if I need a dedicated button for every cell? I've seen "Table View Cell" properties in Interface Builder, it has what I need, but it can't be added to existing cells.

How to properly add this kind of button to every cell of standard TableView?

Answer

I do something similar in an app I am working on right now. I have a cell that has a button on it, and I need to know which button was pushed in which cell. I do that like this..

I add my button to each cell..

// add buy button to each cell
UIImage *image;
buyButton = [UIButton buttonWithType:UIButtonTypeCustom];
image = [UIImage imageNamed:@"buy.png"];
[buyButton setBackgroundImage:image forState:UIControlStateNormal];
buyButton.frame = CGRectMake(220, 35, 96, 34);
[buyButton setTag:cellIndex];
[buyButton addTarget:self action:@selector(buyTickets:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:buyButton];

The method used to determine which "button" in which cell was selected, I then push another view controller with the information of the selected button...

// buy tickets button pressed from main table view 
- (void) buyTickets:(id)sender{


    ResultViewController *vc = [[ResultViewController alloc] init];
    vc.buyMovieID = [sender tag]; // "sender tag" is the cell id the button is located in
    [[super navigationController] pushViewController:vc animated:YES];
    [vc release];
}

This is what the button looks like on each cell. Hope this helps!

P.S. Tapping on the CELL, would push another view controller, but tapping on "Buy Tickets" button pushes a different one.

alt text