我有一个复选框,当其选中时,它会被选中。但是,当我选择该单元格时,高亮显示将覆盖该复选框。对不起,我的英语太糟糕了,但这是下面的代码。有没有办法让我在高亮显示的顶部打勾标记按钮?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;

if([tableView isEqual:self.myTableView]){
    static NSString *TableViewIdentifier = @"MyCells";
    cell = [tableView dequeueReusableCellWithIdentifier:TableViewIdentifier];
    if(cell == nil){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableViewIdentifier];
    }
    //configure the cell
    checkbox = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect checkboxRect = CGRectMake(135, 150, 36, 36);
    [checkbox setFrame:checkboxRect];
    [checkbox setImage:[UIImage imageNamed:@"[email protected]"]forState:UIControlStateNormal];
    [checkbox setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateSelected];
    [checkbox addTarget:self action:@selector(checkboxClicked:) forControlEvents:UIControlEventTouchUpInside];
    cell.accessoryView = checkbox;


    NSString *group;
    NSUInteger row = [indexPath row];

    switch (indexPath.section) {
        case 0:
            group = [suggestedPeople objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 1:
            group = [aArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 2:
            group = [bArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 3:
            group = [cArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 4:
            group = [dArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 5:
            group = [eArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 6:
            group = [fArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 7:
            group = [gArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 8:
            group = [hArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 9:
            group = [iArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 10:
            group = [jArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 11:
            group = [kArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;
        case 12:
            group = [lArray objectAtIndex:row];
            cell.textLabel.text = group;
            break;

    }
}
return cell;}

和其他一些方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"cell is touched");
if(checkbox.state == UIControlStateNormal){
    [checkbox setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateHighlighted];
}else if (checkbox.state == UIControlStateSelected) {
    [checkbox setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateHighlighted];
}}

-(void)checkboxClicked:(UIButton *)sender{
sender.selected = !sender.selected;

UITableViewCell *ownerCell = (UITableViewCell *)sender.superview;
NSIndexPath *ownerCellIndexPath = [self.myTableView indexPathForCell:ownerCell];

if(sender.selected){

}else{

}}

最佳答案

在:

[checkbox setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateSelected];


 [checkbox setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateHighlighted];

可能有帮助

07-26 09:37