复选标记不会出现在第一个单元格上

时间:2014-07-26 07:34:25

标签: ios uitableview checkmark

我需要在点击每个单元格时添加复选标记,并且必须在我返回tableview时显示。 我尝试使用此代码,但它不起作用,

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

if (self.thread == nil) {
    cell.textLabel.text = @"Loading, please wait...";
} else if ([self.thread count] == 0) {
    cell.textLabel.text = @"No Results!";
} else {

    //
    NSDictionary *msg = [self.thread objectAtIndex:indexPath.row];
    NSLog(@"yourMutableDictionary - %@",msg);

    if (indexPath.row == 0) {
        cell.textLabel.text = [thread objectAtIndex:0];

    } else {
        cell.textLabel.text = [NSString stringWithFormat:@"%@ ", [msg objectForKey:@"id"]];

        if ([self.idSelected count] != 0) {
            if ([self.idSelected containsObject:[NSString stringWithFormat:@"%@", [msg objectForKey:@"id"]]]) {
                cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }
        }
    }

}

return cell;
 }

    #pragma mark - Table view delegate

   //In a xib-based application, navigation from a table can be handled in -   tableView:didSelectRowAtIndexPath:
     - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path
     {

if (self.thread == nil || self.thread.count == 0) {
    return;
}
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];

    if (path.row == 0) {

        cell.accessoryType = UITableViewCellAccessoryCheckmark;// this checkmark not working 

    }
 else {
    NSDictionary *user = [self.thread objectAtIndex:path.row];
    NSString *uName = [NSString stringWithFormat:@"%@ %@", [user   objectForKey:@"first_name"], [user objectForKey:@"last_name"]];
    NSString *uId = [NSString stringWithFormat:@"%@",[user objectForKey:@"id"]];
    NSLog(@" click id%@", uId);


    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        [userNames removeObject:uName];
        [userIds removeObject:uId ];

        cell.accessoryType = UITableViewCellAccessoryNone; // this check mark is working perfectly
    } else {
        [userNames addObject:uName];
        [userIds addObject:uId];
        cell.accessoryType = UITableViewCellAccessoryCheckmark; // this check mark is working perfectly

    }

}

}

第一个单元格复选标记不起作用,但其他单元格工作正常。我想在第一个单元格上添加复选标记,它是如何可能的

1 个答案:

答案 0 :(得分:0)

使用以下代码在多个表格视图单元格上显示复选标记:

 - (void)viewDidLoad
    {
        [super viewDidLoad];

        self.arraySelectedCell = [NSMutableArray array];
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {        
        if ([self.arraySelectedCell containsObject:indexPath])
        {
          cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }
        else
        {
          cell.accessoryType = UITableViewCellAccessoryNone;

        }

        // do here..

        return cell;
    }

     - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];

        //the below code will allow multiple selection
        if ([self.arraySelectedCell containsObject:indexPath])
        {
          [self.arraySelectedCell removeObject:indexPath];
        }
        else
        {
           [self.arraySelectedCell addObject:indexPath];
        }

        [tableView reloadData];
    }

快乐的编码!