在UITableView中创建了4x4 metrics按钮。 我想按顺序选择按钮。
//按钮在单元格中为行索引
创建for (int i = 0; i< [buttonArray count]; i++)
{
int buttonSpace = 10 * i + 10;
NSLog(@"ButtonPosition:%d",buttonSpace + (i * 50));
cell.Button = [[CustomButton alloc] initWithFrame:CGRectMake(buttonSpace + (i * 50),35, 50, 50)];
cell.Button.layer.cornerRadius = 25;
[cell.Button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
cell.Button.buttonIndex = i;
[cell.ScrollView addSubview:cell.Button];
cell.ScrollView.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.3];
}
rowIndexValue = indexPath.row;
//视图控制器中的按钮操作。
-(void)buttonAction:(CustomButton *)sender
{
if (rowIndexValue) {
int counter = (int)[sender buttonIndex];
if (counter == incrementValue)
{
sender.backgroundColor = [UIColor redColor];
counter += 1;
incrementValue = counter;
}
else{
sender.selected = NO;
}
}
}
按顺序排列按钮动作的顺序,对于任何随机行。 用户选择第3行但第3行中的选择行从第1个按钮开始,然后是第2个按钮,然后是第3个按钮,最后是第4个按钮。
4x4 - &gt;每行UITableview 4按钮4行。单击按钮后,它将处于禁用模式
答案 0 :(得分:0)
设置适当的值,以便您可以识别按钮列和行位置。 buttonIndex只是保存i值,所以你只能获得列位置。你可以设置button.tag = indexPath.row并在buttonAction方法中使用它来知道行位置。
答案 1 :(得分:0)
在viewController中全局声明NSInteger
tagValue。
-(NSUInteger)getRowByBtn:(UIButton *)btn :(UITableView *)tblView
{
CGPoint center= btn.center;
CGPoint rootViewPoint = [btn.superview convertPoint:center toView:tblView];
NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:rootViewPoint];
NSLog(@"indexPath = %ld", (long)indexPath.row);
return indexPath.row;
}
在上述方法的帮助下,您可以获得indexpath.row
值,您可以从中确定tableview中每行的按钮。
[cell.Button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
-(void)buttonAction:(UIButton*)sender
{
UIButton *btn=(UIButton *)sender;
tagValue = [self getRowByBtn:btn :yourTableview];
[[self.view viewWithTag:tagValue]setUserInteractionEnabled:YES];
//or any other action
}
答案 2 :(得分:0)
在CellForRowAtIndexPath
中设置UIButton标记
像这样:
[cell.btn_name addTarget:self action:@selector(onclick_button:) forControlEvents:UIControlEventTouchUpInside];
self.btn_name.tag=indexpath.row;
并且
-(IBAction)onclick_button:(id)sender
{
int btn_index= ((UIView*)sender).tag;
NSLog(@"Btn index:%d",btn_index);
}
答案 3 :(得分:0)
使用以下代码解决问题。
-(void)buttonAction:(UIButton*)sender{
CGPoint center = sender.center;
CGPoint rootViewPoint = [sender.superview convertPoint:centre toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:rootViewPoint];
sender.userInteractionEnabled = NO;
sender.backgroundColor = [UIColor redColor];
CustomButton *enableNextButton = (CustomButton *) [[self.goalsTableView cellForRowAtIndexPath:indexPath] viewWithTag:sender.tag+1];
enableNextButton.userInteractionEnabled = YES;
}