iOS检查表单元格用户选择或取消选择单元格时的按钮

时间:2016-04-04 12:41:28

标签: ios objective-c cocoa-touch checkbox

实际上我正在使用用户输入创建条目集合。我想在哪里使用Check Box进行选择和选择。而不是复选框我已经使用了Button当用户选择单元格时按钮图像被更改,但是当一个选择再次在该单元格上没有发生任何事情。我试过这个。

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if([[cell.btn backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"unchecked.png"]])
        {
            [cell.btn setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
    }

在didDeselectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([[cell.btn backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"checked.png"]])
    {
         [cell.btn setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];

    }
}

请帮我解决我在哪里。

2 个答案:

答案 0 :(得分:1)

  You must be using data object whose data is used to show in table view just add one property in it isSelected . Lets name the array as "data".




 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
        {
            [data objectAtIndex:[indexPath row]].isSelected=YES;
            [tableView reloadData];//or just row
        }

    And in didDeselectRowAtIndexPath
    -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [data objectAtIndex:[indexPath row]].isSelected=NO;
        [tableView reloadData];//or just row
    }


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        //initial code

        //addd this code
        if([data objectAtIndex:[indexPath row]].isSelected){
          //set checked image 
        }else {
          //set unchecked image
        }
    }

答案 1 :(得分:0)

你必须设置单元格的属性

选择单元格时。 cell.selected = YES;

然后取消选择单元格 cell.selected = NO;

如果您的tableview重新加载,则必须在cellForRowAtIndexPath方法

中执行此操作

因为当您重新加载表时,您必须记住单元格选择状态。

在您的代码中,永远不会调用tableView didDeselect方法

didDeselect仅在您选择了分选的单元格时调用。

希望这会对你有所帮助