我有不同的部分和行的uitaleviewcell,我想要在图片中看到复选框单元格
我的问题是如何在uitableviewcells中创建复选框?(我使用的是storyboard)
答案 0 :(得分:0)
使用UISwitch
并在属性检查器中,为正常状态设置空框图像,为突出显示状态设置复选框图像。但是,复选框行为由ios中的开关表示,复选框的命中区域非常小,可能会给用户带来一个问题,特别是当它们彼此靠近时,就像您提供的图像一样。
答案 1 :(得分:0)
每个复选框单元格应为自定义 TableViewCell。然后只需在TableViewCell中放置一个ImageView和一个Label,并使用didSelectRowAtIndex:在选中/取消选中之间切换图像。
答案 2 :(得分:0)
您需要两个用于imageView of cell
的图像#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;
}