2010-10-08 21 views
1

我似乎无法弄清楚如何做到这一点,希望这里有人能帮助我。在我的tableview中,我想将复选框添加到每个单元格,如果触摸该复选框,则会出现复选标记,并且应该发生特定操作。但如果你只是触摸细胞,就会发生不同的动作。有没有人有一个想法如何做到这一点?我开始做以下事情。但我认为我的方法会造成内存泄漏,而且我不知道如何执行仅针对所有按钮的按钮的动作..... 如果有人能帮我解决问题,那将会很棒......iphone:如何将复选框添加到uitableviewcell?

- (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]; 

} 
NSArray *tempArray = [[exerciseNames objectAtIndex:indexPath.section] objectForKey:@"rowValues"]; 

UIButton *checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
checkButton.tag = indexPath.row; 
[checkButton setFrame:CGRectMake(10, 10, 23, 23)]; 
if (checkButtonPressed == YES) { 
    [checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
} 
else { 
    [checkButton setBackgroundImage:[[UIImage imageNamed:@"unchecked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
} 
[checkButton addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside]; 
[cell addSubview:checkButton]; 

cell.imageView.image = [UIImage imageNamed:@"unchecked.png"]; 
cell.textLabel.adjustsFontSizeToFitWidth = YES; 
cell.textLabel.text = [NSString stringWithFormat:@"%@ (%@)", [[tempArray objectAtIndex:indexPath.row] objectForKey:@"full"], [[tempArray objectAtIndex:indexPath.row] objectForKey:@"short"]]; 

// Set up the cell... 

return cell; 
} 

回答

-1

在Cocoa Touch中,UISwitch是与桌面UI上的复选框等效的UI范例。

您的checkAction处理程序可以检查哪个控件调用它,并且只更改该控件。

1

我会尝试继承UITableViewCell并使每个单元格成为按钮操作的目标。这样,当按下按钮时,事件将由单元对象处理,而不是表格控制器。如果你不喜欢那样,你可以尝试使用你分配给按钮的标签来区分。要做到这一点,让你的按钮选择是

checkAction:(UIButton *)_btn {} 

,当你添加目标,

[checkButton addTarget:self action:@selector(checkAction:) forControlEvents:UIControlEventTouchUpInside]; 

(注意:在@selector()结束)

我的天堂我没有尝试第二种方式,但我认为它会起作用。

3

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:path]; 


     if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
      cell.accessoryType = UITableViewCellAccessoryNone; 
     } else { 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     } 

} 
+1

这个问题问的附加复选框在表格单元格,不会添加到UITableViewCellAccessoryCheckmark – NANNAV 2012-10-03 08:56:17