2010-09-08 2 views
11

Некоторое время назад кто-то уже задавал этот вопрос, и было дано несколько ответов, но я действительно не понимал их. Так что мне было интересно, если кто-нибудь может пожалуйста написать легко понять учебник о том, как делать вещи, показанные на изображении ниже:Как добавить флажки в UITableViewCell ??

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

Я бы так признателен, если кто-нибудь может поделиться, как именно это потому, что он выглядит очень круто, и я хотел бы использовать что-то подобное в своем приложении :-)!

+0

читать эту ссылку http://walkingsmarts.com/creating-radio-button-and -checkbox-lists-using-uitableview/может помочь вам –

ответ

30

Сделать непроверенную и проверено изображение ..

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

indexForRowAtPoint не является признанным приемом в UITableView ... как мне заставить его работать? – quantum

+0

Извините, что должен быть indexPathForRowAtPoint: .. Код теперь исправлен – LarsJK

+0

hm он по-прежнему не распознает какие-либо конкретные нажатия на cell.imageView. есть идеи? – quantum

1

Один из способов, о котором я могу думать, это сделать обычай UITableViewCell (this tutorial подходит для запуска. Это another, similar one). Внутри пользовательского UITableViewCell вам нужно разместить UIButton с изображением круга. Когда пользователь выбирает кнопку, вы измените изображение на зеленый круг

Смежные вопросы