Question Comment ajouter des cases à cocher à UITableViewCell?


Il y a quelque temps, quelqu'un a déjà posé cette question et quelques réponses ont été données, mais je n'en ai pas vraiment compris. Donc, je me demandais si quelqu'un pouvait écrire un tutoriel facile à comprendre sur la façon de faire les choses montrées sur l'image ci-dessous:

http://img208.yfrog.com/img208/6119/screenshotkmr.png

Je serais tellement heureux si quelqu'un peut partager exactement comment faire parce que ça a l'air vraiment cool et j'aimerais utiliser quelque chose de similaire dans mon application :-)!


11
2017-09-08 10:10


origine


Réponses:


Faire une image non cochée et cochée.

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    if ([selectedRowsArray containsObject:[contentArray objectAtIndex:indexPath.row]]) {
        cell.imageView.image = [UIImage imageNamed:@"checked.png"];
    }
    else {
       cell.imageView.image = [UIImage imageNamed:@"unchecked.png"];
    }
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleChecking:)];
    [cell.imageView addGestureRecognizer:tap];
    cell.imageView.userInteractionEnabled = YES; //added based on @John 's comment
    //[tap release];

    cell.textLabel.text = [contentArray objectAtIndex:indexPath.row];
    return cell;
}

- (void) handleChecking:(UITapGestureRecognizer *)tapRecognizer {
    CGPoint tapLocation = [tapRecognizer locationInView:self.tableView];
    NSIndexPath *tappedIndexPath = [self.tableView indexPathForRowAtPoint:tapLocation];

    if ([selectedRowsArray containsObject:[contentArray objectAtIndex:tappedIndexPath.row]]) {
        [selectedRowsArray removeObject:[contentArray objectAtIndex:tappedIndexPath.row]];
    }
    else {
        [selectedRowsArray addObject:[contentArray objectAtIndex:tappedIndexPath.row]];
    }
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:tappedIndexPath] withRowAnimation: UITableViewRowAnimationFade];
}

30
2017-09-08 11:21



Une des façons dont je peux penser est que vous faites UITableViewCell personnalisé (ce tutoriel est bon pour commencer. C'est un autre, similaire). Dans l'UITableViewCell personnalisé, vous devez placer un UIButton avec une image de cercle. Lorsque l'utilisateur sélectionne le bouton, vous changez l'image en cercle vert


1
2017-09-08 10:24