单击UITableView单元格的“自定义”按钮时,无法识别当前单元格对象

时间:2011-10-21 07:20:31

标签: iphone objective-c xcode

我在UITableView中创建了两个自定义按钮。当我点击button1时,另一个按钮应该是可见的。因为我使用以下代码。我正在使用UITableView分组数据类型。

   btnSettingButton=[[UIButton alloc]initWithFrame:CGRectMake(265, 50, 22, 22)];
[btnSettingButton setImage:[UIImage imageNamed:@"Settings Icon.png"] forState:UIControlStateNormal];
[btnSettingButton addTarget:self action:@selector(accessoryButtonTapped:withEvent:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:btnSettingButton];
[btnSettingButton setHidden:YES];



btnUncheck=[[UIButton alloc] initWithFrame:CGRectMake(265, 15, 18, 18)];

//btnUncheck=[UIButton buttonWithType:UIButtonTypeCustom];
btnUncheck.tag=indexPath.row;
[btnUncheck setImage:[UIImage imageNamed:@"NO.png"] forState:UIControlStateNormal];
     [btnUncheck addTarget:self action:@selector(buttonTapped:event:) forControlEvents:UIControlEventTouchUpInside];

[view addSubview:btnUncheck];   
[btnUncheck release];

[cell.contentView addSubview:view];

return cell;



 - (void)buttonTapped:(id)sender event:(id)event
{
CGPoint touchPosition = [[[event allTouches] anyObject] locationInView:self.tableV];
NSIndexPath *indexPath = [self.tableV indexPathForRowAtPoint:touchPosition];
if(favoriteChecked==NO)
   {


    [sender setImage:[UIImage imageNamed:@"YES.png"] forState:UIControlStateNormal];
    if(indexPath){
    [btnSettingButton setHidden:NO];
    }
    favoriteChecked=YES;


   }
   else
   {


    [sender setImage:[UIImage imageNamed:@"NO.png"] forState:UIControlStateNormal];
    [btnSettingButton setHidden:YES];
    favoriteChecked=NO;
   }


}

当我使用此代码时,它会显示该部分最后一个单元格的设置按钮。

请指导我如何将clickButton显示到单击的单元格。

2 个答案:

答案 0 :(得分:1)

btnSettingButton只有一个全局变量 - 当然它指向你创建的最后一个按钮。

您必须保留对您创建的所有设置按钮的所有引用,然后在buttonTapped函数中获取正确的引用。你可以这样做,例如通过添加对字典的所有引用,使用btnUncheck作为键 - btnUncheck是你在按钮单击函数中得到的发送者,所以你可以从字典中获得相应的btnSettingButton。

答案 1 :(得分:1)

其实我并没有清楚地得到你。

我想你想在tableview的单元格中添加一个按钮。如果单击此按钮,则应更改此图像..

我是对的吗?