-1

行とセクションの組み合わせでテーブルビューを作成し、ボタンでカスタマイズしたセクションの行を作成する必要があります。

これで、タスクはボタンをタップした後、各セクションで 1 つの行のみを選択する必要があります。

私のコードの作業は打撃を受け、問題が発生しています

  1. これで選択を示す特定のセクション行の他のセクション行ボタンの1つのボタンをタップしている間、私はセルの再利用性の問題だと思います。

  2. 特定のボタンをタップしたときに、同じセクションの残りのボタンの選択解除プロセスを実行する方法。

これが私のコードです

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    self.juju=[[NSMutableArray alloc]init];

    NSArray *listSeprately = [[NSArray alloc]init];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"questionid==%d",indexPath.section+1];

    listSeprately = [self.questAnswer filteredArrayUsingPredicate:predicate];

    self.buttonMe=[[UIButton alloc]init];
    self.buttonMe = [UIButton buttonWithType:UIButtonTypeCustom];

    [self.buttonMe setFrame:CGRectMake(260.0, 7.0, 30.0, 30.0)];

    self.buttonMe.tag=i;

    if([[arrayCheckUnchek objectAtIndex:indexPath.row] isEqualToString:@"Uncheck"])
    {
        [self.buttonMe setImage:[UIImage imageNamed:@"check.gif"] forState:UIControlStateNormal];
    }
    else
    {
        [self.buttonMe setImage:[UIImage imageNamed:@"uncheck.jpg"] forState:UIControlStateNormal];
    }

    [self.buttonMe addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

    cell.textLabel.text=[juju objectAtIndex:indexPath.row];

    [cell.contentView addSubview: self.buttonMe];

    i++;

    return cell;
}

このコードは、任意のボタンをクリックすると呼び出されます。

-(void)buttonClicked:(id)sender
{
    CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.tableView ];

    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:touchPoint];

    // No need to use tag sender will keep the reference of clicked button

    self.buttonMe = (UIButton *)sender;

    //Checking the condition button is checked or unchecked.
    //accordingly replace the array object and change the button image

    if([[arrayCheckUnchek objectAtIndex:indexPath.row] isEqualToString:@"Uncheck"])
    {
        [ self.buttonMe setImage:[UIImage imageNamed:@"checkImage.jpg"] forState:UIControlStateNormal];
        [arrayCheckUnchek replaceObjectAtIndex:indexPath.row withObject:@"Check"];
    }
    else
    {
        [ self.buttonMe setImage:[UIImage imageNamed:@"uncheck.jpg"]   forState:UIControlStateNormal];
        [arrayCheckUnchek replaceObjectAtIndex:indexPath.row withObject:@"Uncheck"];
    }

    [self.tableView reloadData];
}


- (void)viewDidLoad
{
    [super viewDidLoad];

    self.arrayCheckUnchek = [[NSMutableArray alloc]init];
    self.questAnswer=//here i hve records store that is 19

    for(int i=0; i<[self.questAnswer count]; i++)
    {
        [arrayCheckUnchek addObject:@"Uncheck"];
    }
}

チェックボックスが表示され、すべての行が複数選択されています。任意のセルを自動的に選択すると、他のセルも選択されます。

4

1 に答える 1