2011-09-19 202 views
0

我subclassed UITableViewCell並添加一個按鈕。當按鈕被觸摸時,我該如何迴應事件?我還需要知道按下哪個索引路徑。自定義UITableViewCell與按鈕

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"CustomTableCell"; 

    CustomTableCell *cell = (CustomTableCell *) 
    [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     NSArray *topLevelObjects = [[NSBundle mainBundle] 
            loadNibNamed:@"CustomTableCell" 
            owner:nil options:nil]; 
     for (id currentObjects in topLevelObjects){ 
      if ([currentObjects isKindOfClass:[StatusTableCell class]]){ 
       cell = (StatusTableCell *) currentObjects; 
       break; 
      } 
     }       
    } 
    cell.customButton.tag = indexPath.row; 
    return cell; 
} 
+0

[參考此鏈接] [1] [1]:http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-並有迴應 – HelmiB

回答

4

如果您已通過UITableViewCell子類中的代碼添加了UIButton,則可以使用以下代碼爲其添加操作。

//In UITableViewCell subclass 
    [customButton addTarget:self 
       action:@selector(aMethod:) 
    forControlEvents:UIControlEventTouchDown]; 

然後你已經寫的代碼通過設置訪問行號,

cell.customButton.tag = indexPath.row; 

你可以在該amethod方法標籤值並訪問像下面的indexPath.row值,

//In UITableViewCell subclass 
    -(IBAction)aMethod:(UIButton*)button 
    { 
     NSLog(@"indexPath.row value : %d", button.tag); 
    } 
+0

這是正確的方法。假設它只有1個部分,但... – HelmiB

2

您可以在CustomTableCell筆尖和功能分配IBAction爲做這樣的事情:

- (IBAction) btnDoSomethingPressed:(id)sender { 
    NSIndexPath *indexPath = [yourTableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]]; 
    //Use indexPath (or indexPath.row) like you would in a UITableViewDelegate method 
} 

這假定yourTableView是分配給您的表的實例變量。