我有不同部分和行的 uitaleviewcell,我想要你可以在图片中看到的复选框单元格
我的问题是如何在 uitableviewcells 中创建复选框?(我使用故事板)
我有不同部分和行的 uitaleviewcell,我想要你可以在图片中看到的复选框单元格
我的问题是如何在 uitableviewcells 中创建复选框?(我使用故事板)
使用UISwitch
和 在属性检查器中,为正常状态设置一个空框图像,为突出显示状态设置一个复选框图像。然而,复选框行为由 ios 中的开关表示,复选框的点击区域非常小,可能会给您的用户带来可用性问题,尤其是当它们彼此靠近时,如您提供的图像中所示。
您需要两张图片作为单元格的 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;
}
每个复选框单元格应该是一个自定义TableViewCell。然后只需在 TableViewCell 中放置一个 ImageView 和一个 Label 并使用 didSelectRowAtIndex: 在选中/未选中之间切换图像。