title: How can I get UITableViewCell object from a UIButton action method?
body: <p>I have a UITableView in which I have added a UIButton as accessory view for each cell. Note that I set the tag of the button as current row for future use.</p>
  
  <pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      static NSString *CellIdentifier = @"Cell";
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  
      // Configure the cell...
  
      if(cell == nil) {
          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
  
          cellButton = [UIButton buttonWithType:UIButtonTypeCustom];
          cellButton.frame = CGRectMake(0, 0, 30, 30);  
  
          [cellButton setBackgroundImage:[UIImage imageNamed:@"cellButton.png"] forState:UIControlStateNormal];        
          [cellButton addTarget:self action:@selector(cellButtonAction:) forControlEvents:UIControlEventTouchUpInside];
  
  
          cellButton.tag = indexPath.row;  // &lt;= Will use this in the next method
          cell.accessoryView = cellButton;
      }
  
  
      //Load cell with row based data
  
      return cell;
  }
  </code></pre>
  
  <p>Now when one of these buttons is tapped, I need to make changes to the cell. So I implement cellButtonAction where I use the tag to get back the cell:</p>
  
  <pre><code>-(void)editCommentButtonAction:(id)sender
  {
      UIButton *button = sender;
      NSIndexPath *indexPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
      UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
      [self makeChangesToCell:cell];  
  }
  </code></pre>
  
  <p>But this seems like a very round about way. Is there a cleaner way to do this?</p>