检测button点击表视图多个行和部分的ios xcode

我想检测button点击多行和部分表视图。 我能够在单排的情况下获得成功,但我却遇到了麻烦,没有发现正确的部分。 我有麻烦来检测哪个部分button有用户点击

下面是问题解决后的更新代码

@property (strong,nonatomic) NSMutableArray* quantityArray; @property (strong,nonatomic) NSMutableArray* rows; @synthesize quantityArray,rows; - (void)viewDidLoad { [super viewDidLoad]; quantityArray = [[NSMutableArray alloc] init]; [self PluMinusFunction]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ==================================================== if (addBtnClicked || minusBtnClicked) { cell.lblCount.text = [[quantityArray objectAtIndex:indexPath.section-1]objectAtIndex:indexPath.row]; addBtnClicked = NO; minusBtnClicked = NO; } else { cell.lblCount.text = [[quantityArray objectAtIndex:indexPath.section-1]objectAtIndex:indexPath.row]; } cell.btnMinus.tag = indexPath.row; cell.btnPlus.tag = indexPath.row; cell.lblCount.tag = indexPath.row; [cell.btnPlus addTarget:self action:@selector(addItem:) forControlEvents:UIControlEventTouchUpInside]; if ([ cell.lblCount.text integerValue]!=0) { [cell.btnMinus addTarget:self action:@selector(deleteItem:) forControlEvents:UIControlEventTouchUpInside]; } return cell; } } #pragma mark - Pluys Minus Button -(void) PluMinusFunction { for (int j=0; j <[itemArr count ]; j++) { rows = [[NSMutableArray alloc] init]; for (int i=0; i <[ [[itemArr objectAtIndex:j] objectForKey:@"itemList"]count]; i++) { [rows insertObject:@"0" atIndex:i]; } [quantityArray insertObject:rows atIndex:j]; } [self sum]; } #pragma mark - UIButton selector -(void)addItem:(UIButton*)button { CGPoint touchPoint = [button convertPoint:CGPointZero toView:self.tableView]; NSIndexPath *clickedButtonIndexPath = [self.tableView indexPathForRowAtPoint:touchPoint]; NSInteger row = clickedButtonIndexPath.row; NSInteger section = clickedButtonIndexPath.section; NSInteger LabelText =[[[quantityArray objectAtIndex:section-1]objectAtIndex:row]integerValue]+1; NSMutableArray *subArray = [quantityArray objectAtIndex:section-1]; [subArray replaceObjectAtIndex:row withObject: [NSString stringWithFormat:@"%ld",(long)LabelText]]; [quantityArray replaceObjectAtIndex:section-1 withObject: subArray]; addBtnClicked = YES; NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:row inSection:section]; NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil]; [self.tableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone]; } -(void)deleteItem:(UIButton*)button{ CGPoint touchPoint = [button convertPoint:CGPointZero toView:self.tableView]; NSIndexPath *clickedButtonIndexPath = [self.tableView indexPathForRowAtPoint:touchPoint]; NSInteger row = clickedButtonIndexPath.row; NSInteger section = clickedButtonIndexPath.section; NSInteger LabelValue =[[[quantityArray objectAtIndex:section-1]objectAtIndex:row]integerValue]; if (LabelValue>=1) { NSInteger LabelText =[[[quantityArray objectAtIndex:section-1]objectAtIndex:row]integerValue]-1; NSMutableArray *subArray = [quantityArray objectAtIndex:section-1]; [subArray replaceObjectAtIndex:row withObject: [NSString stringWithFormat:@"%ld",(long)LabelText]]; [quantityArray replaceObjectAtIndex:section-1 withObject: subArray]; addBtnClicked = YES; NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:row inSection:section]; NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil]; [self.tableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone]; } } 

我想成为下面的图像

在这里输入图像说明

下面的链接也给我的问题解决

检测在UITableView中按下了哪个UIButton

Objective-C的

 -(void)addItem:(UIButton*) sender { CGPoint touchPoint = [sender convertPoint:CGPointZero toView:mainTable]; // maintable --> replace your tableview name NSIndexPath *clickedButtonIndexPath = [mainTable indexPathForRowAtPoint:touchPoint]; NSLog(@"index path.section ==%ld",(long)clickedButtonIndexPath.section); NSLog(@"index path.row ==%ld",(long)clickedButtonIndexPath.row); } 

Swift3

  func addItem(sender: UIButton) { var touchPoint = sender.convert(CGPoint.zero, to: self.maintable) // maintable --> replace your tableview name var clickedButtonIndexPath = maintable.indexPathForRow(at: touchPoint) NSLog("index path.section ==%ld", Int(clickedButtonIndexPath.section)) NSLog("index path.row ==%ld", Int(clickedButtonIndexPath.row)) } 

Swift2及以上

 func addItem(sender: UIButton) { var touchPoint: CGPoint = sender.convertPoint(CGPointZero, toView: mainTable) // maintable --> replace your tableview name var clickedButtonIndexPath: NSIndexPath = mainTable(forRowAtPoint: touchPoint) NSLog("index path.section ==%ld", Int(clickedButtonIndexPath.section)) NSLog("index path.row ==%ld", Int(clickedButtonIndexPath.row)) } 
 Swift 3 let clickedButtonIndexPath = self.tableView.indexPathForRow(at: touchPoint) if(clickedButtonIndexPath != nil) { NSLog("index path.section ==%ld", Int(clickedButtonIndexPath!.section)) NSLog("index path.row ==%ld", Int(clickedButtonIndexPath!.row)) }