0

我有不同部分和行的 uitaleviewcell,我想要你可以在图片中看到的复选框单元格

我的问题是如何在 uitableviewcells 中创建复选框?(我使用故事板)

在此处输入图像描述

4

3 回答 3

0

使用UISwitch和 在属性检查器中,为正常状态设置一个空框图像,为突出显示状态设置一个复选框图像。然而,复选框行为由 ios 中的开关表示,复选框的点击区域非常小,可能会给您的用户带来可用性问题,尤其是当它们彼此靠近时,如您提供的图像中所示。

UISwitch 参考

于 2012-08-08T08:22:11.657 回答
0

您需要两张图片作为单元格的 imageView

#define SELECTED_ROW @"selectedRowImage.png" // CheckBox with Selected sign png
#define NOT_SELECTED_ROW @"notSelectedRowImage.png" // Empty CheckBox png

      // listSelected is array of indexes selected

in ViewDidLoad:

NSMutableArray *listSelected = [[NSMutableArray alloc]init];

// CellForRowAtIndexPath:

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

    static NSString *cellIdentifier = @"select";    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

   if ([self checkIfIndexPathAlreadySelected:indexPath])
            cell.tag = 1;
        else cell.tag = 0;

    if(cell.tag == 0)
        cell.imageView.image = [UIImage imageNamed:NOT_SELECTED_ROW]; 
    else
        cell.imageView.image = [UIImage imageNamed:SELECTED_ROW];   

    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     

     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];     
     if(cell.tag == 0)
     {
         cell.tag = 1;
         [self.listSelected addObject:indexPath]];
         cell.imageView.image = [UIImage imageNamed:SELECTED_ROW];        
     }
     else if(cell.tag == 1)
     {
         cell.tag = 0;
         [self.medicineIndexArray removeObject:indexPath];
         cell.imageView.image = [UIImage imageNamed:NOT_SELECTED_ROW];        
     }
 }


- (BOOL)checkIfIndexPathAlreadySelected:(NSIndexPath *)indexPath
{

    if([self.listSelected containsObject:indexPath])
        return YES;
    else 
        return NO;
}
于 2012-08-08T10:47:38.747 回答
0

每个复选框单元格应该是一个自定义TableViewCell。然后只需在 TableViewCell 中放置一个 ImageView 和一个 Label 并使用 didSelectRowAtIndex: 在选中/未选中之间切换图像。

于 2012-08-08T08:34:59.963 回答