Например, нажатие на первую строку используется для изменения других строк.Нажмите на другие строки только изменить себя.arrCheckbox - это массив, используемый для хранения проверки всех строк.
- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//NSLog(@"AV--%s", __func__);
HistoryCell2 *cell = [tableview dequeueReusableCellWithIdentifier:CellId];
if (cell == nil) {
NSLog(@"Create new row");
[tableview registerNib:[UINib nibWithNibName:@"HistoryCell2" bundle:nil] forCellReuseIdentifier:CellId];
cell = [tableview dequeueReusableCellWithIdentifier:CellId];
}
cell.tag = indexPath.row;
BOOL checked = [[arrCheckbox objectAtIndex:indexPath.row] boolValue];
UIImage *image = (checked) ? [UIImage imageNamed:@"cb_on.png"] : [UIImage imageNamed:@"cb_off.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect frame = CGRectMake(1.0, 1.0, 29, 29);
button.frame = frame; // match the button's size with the image size
button.tag = indexPath.row;
[button setBackgroundImage:image forState:UIControlStateNormal];
// set the button's target to this table view controller so we can interpret touch events and map that to a NSIndexSet
[button addTarget:self action:@selector(checkButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
return cell;
}
- (void) checkButtonTapped:(id)sender
{
NSLog(@"%s", __func__);
UIButton *tappedButton = (UIButton*)sender;
int index = (int)tappedButton.tag;
NSLog(@"Row button: %d", index);
if(index > 0)
{
BOOL checked = [[arrCheckbox objectAtIndex:index] boolValue];
[arrCheckbox removeObjectAtIndex:index];
[arrCheckbox insertObject:(checked) ? @"0":@"1" atIndex:index];
UIImage *newImage = (checked) ? [UIImage imageNamed:@"cb_off.png"] : [UIImage imageNamed:@"cb_on.png"];
[tappedButton setBackgroundImage:newImage forState:UIControlStateNormal];
}
else{
//UITableView *tableview = (UITableView *)[[tappedButton superview] superview];
UIImage *newImage;
BOOL checked = [[arrCheckbox objectAtIndex:0] boolValue];
for(int i=0; i<[arrCheckbox count]; i++)
{
//NSLog(@"Row: %d------", i);
[arrCheckbox removeObjectAtIndex:i];
[arrCheckbox insertObject:(checked) ? @"0":@"1" atIndex:i];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
for(UIView *subview in cell.contentView.subviews)
{
if([subview isKindOfClass: [UIButton class]])
{
//NSLog(@"Modify button");
tappedButton = (UIButton*)subview;
//[subview removeFromSuperview];
newImage = (checked) ? [UIImage imageNamed:@"cb_off.png"] : [UIImage imageNamed:@"cb_on.png"];
[tappedButton setBackgroundImage:newImage forState:UIControlStateNormal];
}
}
}
}
}