开发者

check box in table UITableView

开发者 https://www.devze.com 2023-02-28 07:07 出处:网络
I was working with the UITableView and I had a checkbox related to every row of items. On click event of a button, it should generate a list o开发者_如何学运维f checked items in the UITableView.

I was working with the UITableView and I had a checkbox related to every row of items.

On click event of a button, it should generate a list o开发者_如何学运维f checked items in the UITableView.

I am not able to do so, Please help me out


Go through the SO links.

Checkbox cell in a table view: User can't check it

checkbox button in table view in iphone

For more read Apple Doc's for Manage selection in UITableViewCell.

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/TableView_iPhone/ManageSelections/ManageSelections.html

EDITED:

Use tag property of UIButton ,

#define KON  1 //For checked state 
#define KOFF 0 //For Unchecked state 

-(void) myButtonAction:(id) sender
{
    UIButton* myButton = (UIButton*) sender;

    if(myButton.tag == KON)
    {
         myButton.tag = KOFF;
         //Change the button image 
    }
    else 
    {
         myButton.tag = KON;
         //Change the button image 

    }
}


Example, click on first row is used to change for other rows. Click on other rows only change itself. arrCheckbox is an array used to store check of all rows.

- (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];
                }
            }
        }
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消