在我的应用程序中,我在表视图中的每一行中实现了单选按钮。 问题是当我点击第一行的单选按钮时,某处,即第五行的单选按钮被选中。
我需要选择我点击的按钮。这是我所做的代码。
提前致谢。
(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] autorelease];
UIImageView *backGroundImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"History_strip_bg1.png"]];
[cell.contentView addSubview:backGroundImageView];
[backGroundImageView release];
cell.accessoryView=[[ UIImageView alloc ]initWithImage:[UIImage imageNamed:@"arrow2.png"]];
if(doneBtnFlag)
{
radioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[radioBtn setImage:[UIImage imageNamed:@"radio_button_1.png"] forState:UIControlStateNormal];
[radioBtn setImage:[UIImage imageNamed:@"radio_button_selected.png"] forState:UIControlStateSelected];
[radioBtn setFrame:CGRectMake(2, 17, 25, 25)];
[cell.contentView addSubview:radioBtn];
[radioBtn addTarget:self action:@selector(radioButtonClicked:event:) forControlEvents:UIControlEventTouchUpInside];
radioBtn.tag = 1;
}
btn=(UIButton*)[cell.contentView viewWithTag:1];
}
return cell;
}
- (IBAction)radioButtonClicked:(id)sender event : (id)event
{
btn.selected = YES;
rightBtn.enabled =YES;
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:contactsTblView];
NSIndexPath *indexPath = [contactsTblView indexPathForRowAtPoint: currentTouchPosition];
NSLog(@"indexPath %@",indexPath);
}
答案 0 :(得分:1)
此代码存在一些问题。
您没有处理[tableView dequeueReusableCellWithIdentifier]实际返回要使用的有效单元格的情况,而是只在“cell == NULL”时才执行工作。
我敢打赌,如果你设置断点并查看(或NSLog的值)indexPath.row,你会看到“cell == NULL”情况下的代码只是偶尔被调用。
什么是“btn”用于?你分配它然后不做任何事情。