0

各セクションに 4 つのセルがあり、セクションの数も 2 のテーブル ビューを実装しようとしています。各セクションの最後の 2 行に購入ボタンを追加し、行が選択されなくなるまで非表示にします。最初のセクションの最後の行をクリックすると、購入ボタンが表示されます。ただし、2 番目のセクション (最後のセクション) の最後の行をタップするとすぐに表示されません。これが私のコードです。

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath 
 *)indexPath 
 {

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
    reuseIdentifier:CellIdentifier];

// some code for cell properties

    if(indexPath.section==0)
    {   
      if(indexPath.row==2)
        {                
            //some code for property of buy button1

            cell.accessoryType = UITableViewCellAccessoryNone;
            cell.accessoryView = buyButton1;
            [buyButton1 setHidden:YES];
        }
      if(indexPath.row==3)
        {                              
          //some code for property of buy button2
          cell.accessoryType = UITableViewCellAccessoryNone;
          cell.accessoryView = buyButton2;
          [buyButton2 setHidden:YES];
        }
    }    

    if(indexPath.section==1)
    {   
       if(indexPath.row==2)
        {

            //some code for property of buy button3
            [cell addSubview:buyButton3];
            [buyButton3 setHidden:TRUE];

        }
        if(indexPath.row==3)
        {

            buyButton4= [UIButton buttonWithType:UIButtonTypeRoundedRect];
            buyButton4.frame = CGRectMake(194, 4, 70, 37);
            [buyButton4 setTitle:@"Buy" forState:UIControlStateNormal];

            [buyButton4 addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
            buyButton4.tag = 4;
            [cell addSubview:buyButton4];
            [buyButton4 setHidden:TRUE];

        }
    } 

}
if(indexPath.section == 0)
{
  cell.textLabel.text = [privateArray objectAtIndex:indexPath.row];
}    
else
{
  cell.textLabel.text = [workArray objectAtIndex:indexPath.row];

}
return cell;
}

行を選択するための私のコードは次のとおりです

- (void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{

[tableViewForOccasion deselectRowAtIndexPath:indexPath animated:NO];

NSArray *visibleCells = [tableViewForOccasion visibleCells];

for (UITableViewCell *aCell in visibleCells) 
{
    aCell.accessoryType = UITableViewCellAccessoryNone;
}
if(indexPath.section==1)
{
  if(indexPath.row==3)
   {
     [buyButton4 setHidden:FALSE];
   }
}
}

ここに画像の説明を入力

4

2 に答える 2

2

2番目のセクションの最後の行について話しているので、チェック条件が間違っています

if(indexPath.section==1)
{
  if(indexPath.row==3) // you have mistake in this part where you had if(indexPath.row==2)
   {
     [buyButton4 setHidden:FALSE];
   }
}
于 2012-09-24T07:24:26.880 に答える
0
I think you forgot the `buyButton4` allocation and `setHidden = FALSE`. 

//Replace Your Code

if(indexPath.row==3)
        {
        UIButton * buyButton4 =[[UIButton alloc] init];
            buyButton4= [UIButton buttonWithType:UIButtonTypeRoundedRect];
            buyButton4.frame = CGRectMake(194, 4, 70, 37);
            [buyButton4 setTitle:@"Buy" forState:UIControlStateNormal];

            [buyButton4 addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
            buyButton4.tag = 4;
            [cell addSubview:buyButton4];
            [buyButton4 setHidden:FALSE];

        }
于 2012-09-24T07:29:35.173 に答える