флажок в таблице UITableView - PullRequest
       4

флажок в таблице UITableView

1 голос
/ 21 апреля 2011

Я работал с UITableView, и у меня был флажок, связанный с каждым рядом элементов.

При событии нажатия кнопки должен генерироваться список отмеченных элементов в UITableView.

Я не могу этого сделать, пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 03 октября 2014

Например, нажатие на первую строку используется для изменения других строк.Нажмите на другие строки только изменить себя.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];
                }
            }
        }
    }
}
0 голосов
/ 21 апреля 2011

Перейдите по ссылкам SO.

Ячейка флажка в представлении таблицы: пользователь не может проверить это

кнопка флажка в представлении таблицы в iphone

Подробнее читайте в Apple Doc's для управления выбором в UITableViewCell.

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

РЕДАКТИРОВАНИЕ:

Используйте свойство тега 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 

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...