Iphone 表视图中的按钮不响应其单元格编号
我在每个单元格中有一个表视图,两个按钮分别为“编辑”和“取消”。当我在同一个单元格号中同时点击编辑按钮时,取消按钮图像应该会改变。例如当用户选择第二个单元格“编辑”按钮时,第二个单元格中的“取消”按钮应更改其图像 我的问题是,当我点击任何单元格编辑按钮时,另一个单元格取消按钮图像会自动更改 我想,当用户点击第一个单元格时,只有第一个单元格取消按钮应该被更改,而不是其他单元格?请给我样品,我们如何才能做到这一点?就我所知,这是因为重新使用牢房Iphone 表视图中的按钮不响应其单元格编号,iphone,ios5,uitableview,Iphone,Ios5,Uitableview,我在每个单元格中有一个表视图,两个按钮分别为“编辑”和“取消”。当我在同一个单元格号中同时点击编辑按钮时,取消按钮图像应该会改变。例如当用户选择第二个单元格“编辑”按钮时,第二个单元格中的“取消”按钮应更改其图像 我的问题是,当我点击任何单元格编辑按钮时,另一个单元格取消按钮图像会自动更改 我想,当用户点击第一个单元格时,只有第一个单元格取消按钮应该被更改,而不是其他单元格?请给我样品,我们如何才能做到这一点?就我所知,这是因为重新使用牢房 - (UITableViewCell *)table
- (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
{
NSArray *arrayView = [cell.contentView subviews];
for (UIView *vTemp in arrayView)
{
[vTemp removeFromSuperview];
}
NSLog(@"---No New Cell hiiii");
}
// 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 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];
// 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];
[imageViewArray addObject:_checkButton];
[imageViewArray addObject:_cancelButton];
// 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{
button = (UIButton *)sender;
row = button.tag;
col = button.titleLabel.tag;
_textFieldQuantity.userInteractionEnabled = YES;
UIImage *buttonImage = [UIImage imageNamed:@"edit_over.png"];
[_checkButton 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];
}
}
-(void)removeEntry:(id) sender{
_hotel = [HotelList sharedInstance];
NSLog(@"Called...%d",[_hotel._orderedMenus count]);
NSLog(@"Button index is ------%d", row);
if ([_hotel._orderedMenus count] > 1) { // if table contains multiple menus
[_hotel._orderedMenus removeObjectAtIndex:row];
[_hotel._menuPrices removeObjectAtIndex:row];
[_hotel._selectedQuantity removeObjectAtIndex:row];
NSNumber *aNumber;
int sum = 0;
for (aNumber in _hotel._menuPrices)
{
int aInt = [aNumber intValue];
sum = sum + aInt;
}
_labelFinalBillAmount.text = [NSString stringWithFormat:@"%d", sum];
}
else if ([_hotel._orderedMenus count] == 1){ // if table contain only single menu // Here All array gets Empty
[_hotel._orderedMenus removeAllObjects];
_labelFinalBillAmount.text = @"0";
}
NSLog(@"--count is %d",[_hotel._orderedMenus count]);
[_tableviewMenus reloadData];
}
您正在使用自定义单元格,然后将此代码放到自定义类中,并获取特定单元格的特定发件人
-(IBAction)yourButtonMehod:(id)sender
{
UIView *senderButton = (UIView*) sender;
NSIndexPath *indexPath = [(UITableView *)self.superView indexPathForCell: (UITableViewCell*)[[senderButton superView]superView]];
}
现在,您可以获取发送者并使用indexpath.row在按钮操作方法中执行任何操作
-(IBAction)cellButtonPressed:(id)sender withEvent:(UIEvent *)event
{
UITouch * touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView: bulletinTable];
NSIndexPath * indexPath = [bulletinTable indexPathForRowAtPoint: location];
}
还有你的cellForRowAtIndexPath方法
[cell.accessory addTarget:self action:@selector(cellButtonPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside];
这应该是可行的。我如何使用其IndexPath位置按钮更改按钮图像我不理解您在评论中提到的问题?请提供详细信息。如果用户单击同一单元格上的编辑按钮,我想更改取消按钮图像。例如:;如果用户单击第三个单元格编辑按钮,同时第三个单元格cance l按钮会被更改,但不会使
UITableViewCell
自定义,这将解决您的许多问题,包括重复使用单元格、更改背景等。