iPhone 4.3 的 Tableview 中的多个单元格选择

Posted

技术标签:

【中文标题】iPhone 4.3 的 Tableview 中的多个单元格选择【英文标题】:Multiple Cell selection in Tableview for iPhone 4.3 【发布时间】:2012-04-20 06:35:05 【问题描述】:

我需要在 iphone 4.3 的 tableview 中选择多行。如果选择不带附件类型,则应更改单元格的背景颜色。导航到多个视图后,如果我返回 table view 需要显示选定的单元格。

我可以做多项选择,这是我实现的逻辑

在 IndexPath 行的单元格中:

    cellButton = [UIButton buttonWithType:UIButtonTypeCustom];
            cellButton.tag = indexPath.row;
            cellButton.frame = CGRectMake(POSITION_LABEL_X, POSITION_LABEL_Y, 320, 60);
            cellButton.backgroundColor = [UIColor clearColor];
            [cellButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
            [cell.contentView addSubview:cellButton];

if(self.selectedRows && [self.selectedRows containsObject:indexPath])
    
        UIImage *rowBackground = [UIImage imageNamed:@"cellBG.png"];
    ((UIImageView *)cell.backgroundView).image = rowBackground;
     cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)] autorelease];
  cell.selectedBackgroundView.backgroundColor = [[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1] autorelease]; 
    

    else 

        cell.selectedBackgroundView.backgroundColor = [UIColor clearColor];
    

按钮操作:

-(void) buttonPressed:(UIButton *)sender

    UITableViewCell* selectedCell =  (UITableViewCell*)sender.superview.superview;
    if([sender isSelected])
    
        [selectedCell setSelected:NO];
        //sender.backgroundColor = [UIColor clearColor];
        [selectedCell setBackgroundColor:[UIColor clearColor]];
        [self.selectedRows removeObject:[NSNumber numberWithInt:sender.tag]];
                        [sender setSelected:NO];
     
    else 
    
        [selectedCell setSelected:YES];
        sender.backgroundColor = [[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1];
        //[selectedCell setBackgroundColor:[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1]];
        [self.selectedRows addObject:[NSNumber numberWithInt:sender.tag]];
        [sender setSelected:YES];
    

我正在将选定的单元格值保存在数据库中,并且能够再次将这些值检索到 tableView,但不知道如何使用这些值使单元格成为选中状态。

-(void) highlightSelectedValue

    [self.selectedRows removeAllObjects];
    NSLog(@"response %@",self.taskResponse.response);
    NSArray *selected = [self.taskResponse.response componentsSeparatedByString:@","];
    for (NSString *s in selected) 
        [self.selectedRows addObject:[NSNumber numberWithInt:([s intValue] - 1)]];
        UIButton *selectedButton = (UIButton*)cellButton;
            [selectedButton setSelected:NO];
        [selectedButton setTag:[s integerValue] -1 ]; 
        [self buttonClicked:selctedButton];
       [self.selectionTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle];
    

谢谢。

【问题讨论】:

【参考方案1】:

试试这个代码。它可以帮助你解决你的问题

-(void) highlightSelectedValue

    [self.selectedRows removeAllObjects];
    NSLog(@"response %@",self.taskResponse.response);
    NSArray *selected = [self.taskResponse.response componentsSeparatedByString:@","];
    for (NSString *s in selected) 
        [self.selectedRows addObject:[NSNumber numberWithInt:([s intValue] - 1)]];

        UITableViewCell *selectedCell = [self.selectionTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0]];
        [selectedCell setBackgroundColor:[[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1] autorelease]];
        [self.selectionTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle];
    

【讨论】:

但如果我想取消选择单元格。它不会发生。 取一些布尔值并将其放在需要的地方

以上是关于iPhone 4.3 的 Tableview 中的多个单元格选择的主要内容,如果未能解决你的问题,请参考以下文章

iphone中的可扩展tableView

iphone中的可扩展tableView

iPhone - Tableview 中的多线程 - 可行的方法?

iPhone中的自动tableView单元格大小?

我可以在 iphone 的 tableview 中的两个单元格之间留出空间吗?

tableview 中的两个 TextFields,都在滚动视图上,当键盘出现 iPhone 时消失