1

を使用しているという点でテーブルビューがありますcustom cell。「編集」と「キャンセル」という名前の各テーブル ビュー セルに 2 つのボタンがあり、両方とも に画像がありcellForRowます。ユーザーが編集ボタンを同時にクリックすると、同じ行のキャンセルボタンが画像を変更する必要があります。コードは機能していますが、同じ行のキャンセル ボタン イメージを変更していません。別の行を変更すると、ボタンの画像がキャンセルされます。各ボタンの状態を維持する方法。

コードはこちら

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

  simpleTableIdentifier = @"MenuNameCell";
  MenuNameCell *cell = (MenuNameCell *)[tableView  dequeueReusableCellWithIdentifier:simpleTableIdentifier];

     if (cell== nil) {
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MenuNameCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
    NSLog(@"---------new cell agin");   
}
   else
       [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];


// Creating Label Menu Name
_nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(8, 11, 82, 21)];
_nameLabel.backgroundColor = [UIColor clearColor];
_nameLabel.text =  [_hotel._orderedMenus objectAtIndex:indexPath.row];

// Creating Label Menu Cost
_amountMenu   = [[UILabel alloc] initWithFrame:CGRectMake(167, 13, 44, 21)];
_amountMenu.backgroundColor = [UIColor clearColor];
_amountMenu.text  = [[_hotel._menuPrices objectAtIndex:indexPath.row] stringValue];

// Creating Text Field For Order Quantity
_textFieldQuantity = [[UITextField alloc] initWithFrame:CGRectMake(125,14,42,21)];
_textFieldQuantity.userInteractionEnabled = NO;
_textFieldQuantity.text = [[_hotel._selectedQuantity objectAtIndex:indexPath.row] stringValue];

//Creating Button For CANCEL Order
_cancelButton  = [UIButton buttonWithType:UIButtonTypeCustom];
[_cancelButton setFrame:CGRectMake(265, 13, 25, 28)];
[_cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
[_cancelButton setTag:indexPath.row];
[_cancelButton addTarget:self  action:@selector(cancelOreder:) forControlEvents:UIControlEventTouchUpInside];

// Creating Button For Check Order
_checkButton  = [UIButton buttonWithType:UIButtonTypeCustom];
[_checkButton setFrame:CGRectMake(232, 13, 25, 28)];
[_checkButton setTag:indexPath.row];
[_checkButton setBackgroundImage:[UIImage imageNamed:@"edit.png"]forState:UIControlStateNormal];
[_checkButton addTarget:self action:@selector(editQuantity:) forControlEvents:UIControlEventTouchUpInside];

// Adding All To Content View
[cell.contentView addSubview:_nameLabel];
[cell.contentView addSubview:_amountMenu];
[cell.contentView addSubview:_textFieldQuantity];

[cell.contentView addSubview:_checkButton];
[cell.contentView addSubview:_cancelButton];

//objc_setAssociatedObject(_checkButton, iindex, indexPath,OBJC_ASSOCIATION_RETAIN );

return cell;
 }

-(void)editQuantity:(id)sender{

NSLog(@"count of the array is----%d",[imageViewArray count]);
button = (UIButton *)sender;
row = button.tag;
NSLog(@"---rowww%d",row);
_textFieldQuantity.userInteractionEnabled = YES;
UIImage *buttonImage = [UIImage imageNamed:@"edit_over.png"];

[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
UIImage *buttonImageCancel = [UIImage imageNamed:@"check.png"];
[_cancelButton setBackgroundImage:buttonImageCancel forState:UIControlStateNormal];
    _cancelButton.tag =  0;
}

-(void)cancelOreder:(id)sender{
button = (UIButton *)sender;
row = button.tag;
NSLog(@"The Row Selected iS At Cancel Order ISSSS----%d", row);
if (_cancelButton.tag ==  0){
    _textFieldQuantity.userInteractionEnabled = NO;
    UIImage *buttonImageCancel = [UIImage imageNamed:@"check_over.png"];
    [_cancelButton setBackgroundImage:buttonImageCancel  forState:UIControlStateNormal];
    UIImage *buttonImageCancel1 = [UIImage imageNamed:@"cancel.png"];
    [_cancelButton setBackgroundImage:buttonImageCancel1 forState:UIControlStateNormal];
    UIImage *buttonImage = [UIImage imageNamed:@"edit.png"];
    [_checkButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
    _cancelButton.tag = 1;
}
else
{
    UIAlertView *alert =  [[UIAlertView alloc] initWithTitle:@"iHomeDelivery" message:@"Do You Want To Cancel the Order" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alert show];
    [alert release];
  }
}
4

3 に答える 3

0

最初に次のようにボタンごとに異なるタグを付けます。

[_checkButton setTag:indexPath.row];

[_cancelButton setTag:indexPath.row+100];

そしてあなたのeditQuantity:方法で

button = (UIButton *)sender;
row = button.tag;

NSIndexPath *currentIndexPath = [NSIndexPath indexPathForRow:row inSection:0];

UITableViewCell *newCell = [yourTable cellForRowAtIndexPath:currentIndexPath];

newCancelButton = (UIButton *)[newCell.contentView viewWithTag:row+100];

[newCancelButton setBackgroundImage:buttonImageCancel forState:UIControlStateNormal];

cancelOreder:_checkButtonの画像を変更するには、メソッドでも同じことを行います。

また、これを使用してすべてのサブビューを削除します。

[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
于 2012-12-27T09:39:32.953 に答える
0

_cancelButton と _checkButton を同じセルに異なるタグで作成してみてください。同じ行に同じタグで両方を作成するのはパズルだと思います。

于 2012-12-27T09:24:16.347 に答える