0

複数のボタンが存在するセルを作成する必要があります。ここで、テーブルビューは展開可能で折りたたみ可能であり、セクションの数とセクション内の行の数は動的です。

私はこの方法でタスクが欲しいここに画像の説明を入力

それは各行にあります。4 つのタスクのみが必要です。残りのタスクは次の行に表示されます。しかし、私の問題は、4行よりも13タスクしかない場合、1行目と2行目と3行目には4つのタスクが含まれ、最後の行には1つのタスクしか含まれていませんが、テキストも変更されません。仕事。

これが私のコードです。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if ([self tableView:tableView canCollapseSection:section])
    {
        if ([expandedSections containsIndex:section])
        {
            objePro = [appDelegate.array_proj objectAtIndex:section];

            rowcount = [objePro.arr_task count] + 1;
            NSLog(@"rowcount %d",rowcount);
            if (rowcount < 4)
                return 2;
            else
            {
                if (rowcount % 4)
                {
                    NSLog(@"odd: %d",rowcount/4 + 2);
                    return rowcount/4 + 2;
                }
                else
                {
                    NSLog(@"even: %d",rowcount/4);
                    return rowcount/4;
                }
            }
        }
    }
    return 1;
}

- (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] ;
    }
    cell.backgroundColor = [UIColor clearColor];

    if ([self tableView:tableView canCollapseSection:indexPath.section])
    {
        if (!indexPath.row)
        {
            cell.textLabel.textColor = [UIColor whiteColor];
            UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:CGRectZero];
            cell.backgroundView = backgroundView;
            backgroundView.image = [UIImage imageNamed:@"prjctcell_bg.png"];

            objePro = [appDelegate.array_proj objectAtIndex:indexPath.section];

            cell.textLabel.text = objePro.projctname;
            if ([expandedSections containsIndex:indexPath.section])
                cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor blackColor] type:DTCustomColoredAccessoryTypeUp];
            else
                cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor blackColor] type:DTCustomColoredAccessoryTypeDown];
        }
        else
        {
            // all other rows
            cell.accessoryView = nil;

            j=4;

                for (k = 0; k<4; k++)
                {
                    NSLog(@"k %d",k);

                    btnexpand = [[UIButton alloc] init];
                    btnexpand = [UIButton buttonWithType:UIButtonTypeCustom];
                    btnexpand.frame = CGRectMake(j, 5, 80, 40);
                    btnexpand.backgroundColor = [UIColor clearColor];
                    [btnexpand setTitleColor:[UIColor colorWithRed:53.0/255 green:53.0/255 blue:53.0/255 alpha:1.0] forState:UIControlStateNormal];
                    btnexpand.titleLabel.font = [UIFont boldSystemFontOfSize:14];

                    [btnexpand setTitle:[NSString stringWithFormat:@"Step %d",[[[[appDelegate.array_proj objectAtIndex:indexPath.section] arr_task] objectAtIndex:indexPath.row - 1] taskid]] forState:UIControlStateNormal];
                    NSLog(@"btn title: %@",btnexpand.titleLabel.text);

                    [btnexpand setBackgroundImage:[UIImage imageNamed:@"greenarrow.png"] forState:UIControlStateNormal];
                    [cell.contentView addSubview:btnexpand];

                    j= j+65;
                }

        }
    }
    return cell;
}

私を助けてください。

4

1 に答える 1

1

numberOfRowsInSection

rowcount = [objePro.arr_task count]; // Keep original count
if (rowcount % 4) // This means its not exact multiple of four
    return rowcount/4 + 2;
else
    return rowcount + 1;

cellForRowAtIndexPath 内

if(indexpath.row == 0){
    Your code for header line
}
else{
    objePro = [appDelegate.array_proj objectAtIndex:section];
    int rowcount = [objePro.arr_task count];
    if(rowcount < 4){
         for(int i = 0; i < 4; i++){
                 NSLog (@"%d", i+1);
         }
    }
    else{
         int iRow = rowcount / 4;
         if (rowcount % 4){
              for(int i = 0; i < 4; i++)
                   NSLog(@"Current Step %d", indexpath.row-1 + i);
         }
         else{
              for(int i = 0; i < rowcount % 4; i++)
                   NSLog(@"Current Step %d", indexpath.row-1 + i);
         }

    }



}

これはすべてトリックです。いくつかの努力をする必要があります。私はあなたにいくつかの方向性を示したことを願っています.

于 2013-03-28T04:34:43.883 に答える