如果有人可以帮助达到以下要求,那就太好了。 在tableviewcell中,我有水平滚动视图,它将动态添加uibuttons。用户可以从一行中选择多个按钮,但不能从不同的行中选择按钮。例如,如果我已经选择了第1行中的按钮(我应该能够选择一个或多个按钮),当我点击第2行中的按钮时,应取消选择第1行中的所选按钮,并选择我在第2行中点击的按钮
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.timeslotScrollView.contentSize = CGSizeMake(500, 0);
cell.timeslotScrollView.scrollEnabled = YES;
cell.timeslotScrollView.showsHorizontalScrollIndicator = NO;
UIButton *button = [[UIButton alloc]init];
button.frame = CGRectMake(0, 0, 68, 35);
[button setTitle:@"abc" forState:UIControlStateNormal];
button.layer.borderWidth = 2;
button.layer.borderColor = [UIColor colorWithRed:0.23 green:0.71 blue:0.29 alpha:1.0].CGColor;
button.layer.cornerRadius = 3;
button.userInteractionEnabled = YES;
[button setTitleColor:[UIColor colorWithRed:0.23 green:0.71 blue:0.29 alpha:1.0] forState:UIControlStateNormal];
[button setTag:indexPath.row];
[button addTarget:self action:@selector(didTap:) forControlEvents:UIControlEventTouchUpInside];
UIButton *button1 = [[UIButton alloc]init];
button1.frame = CGRectMake(button.frame.origin.x+68+buttonSpace, 0, 68, 35);
[button1 setTitle:@"5 pm" forState:UIControlStateNormal];
[button1 setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
button1.layer.borderWidth = 2;
button1.layer.borderColor = [UIColor grayColor].CGColor;
button1.layer.cornerRadius = 3;
button1.userInteractionEnabled = YES;
[button1 setTag:indexPath.row];
[button1 addTarget:self action:@selector(didTap:) forControlEvents:UIControlEventTouchUpInside];
[cell.timeslotScrollView addSubview:button];
[cell.timeslotScrollView addSubview:button1];
}
return cell;
}
-(void)didTap:(id)sender
{
UIButton *pressedButton = (UIButton *)sender;
if (pressedButton.tag != selectedButton ) {
[sender setBackgroundColor:[UIColor greenColor]];
selectedButton = pressedButton.tag;
}
else{
[sender setBackgroundColor:[UIColor clearColor]];
}
}
答案 0 :(得分:0)
我会尝试不同的方法。我将子类UITableViewCell并在单元格实现文件中添加按钮。然后我会在这个单元格中添加一个方法来触发按钮的选择/取消删除以及你需要执行的任何其他操作。
此时,在cellForRowAtIndexPath委托中,您唯一需要关注的是调用单元格中的方法来执行选择取消选择。
答案 1 :(得分:0)
我会做这样的事情:
- (void) tableView: (UITableView *) tableView didDeselectRowAtIndexPath: (NSIndexPath *)indexPath {
[[tableView cellForRowAtIndexPath: indexPath] deselectAllButtons];
}
现在每次取消选择一行时,无论其他任何行发生什么,都会取消选中所有按钮。您仍然需要编写自己的deselectAllButtons
方法,例如通过迭代timeslotScrollView
的所有子视图。