我有一张如下图所示的表格视图:
当我在Absence
部分选择一个表格行时,我想更改复选框并使用标记复选框我知道我应该使用这个方法didSelectRowAtIndexPath:“当用户选择行时应该更改图片” 但我不知道如何
你能帮我吗提前致谢!
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *key = [[self sectionKeys] objectAtIndex:[indexPath section]];
NSArray *contents = [[self sectionContents] objectForKey:key];
NSString *contentForThisRow = [contents objectAtIndex:[indexPath row]];
if (indexPath.section != 2) {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell.textLabel.text =contentForThisRow;
return cell;
}
else {
CheckBoxCompensationViewCell *cell = (CheckBoxCompensationViewCell*)[tableView
dequeueReusableCellWithIdentifier:@"CheckBoxCompensationViewCell"];
cell.imageView.image=[UIImage imageNamed:@"emptycheck-box.png"];
cell.checkBox.image = image;
if(indexPath.row == 0){
cell.compensationText.text =@"Red";
}
else if (indexPath.row == 1){
cell.compensationText.text =@"Green";
}else if(indexPath.row == 2){
cell.compensationText.text =@"Blue";
}
return cell;
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// I don't know what should I have here , probably mark box image but I don't know how
}
答案 0 :(得分:2)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *previousPath = self.selectedIndexPath;
self.selectedIndexPath = indexPath;
[tableView reloadRowsAtIndexPaths:@[previousPath, indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
请注意,这是非常基本的,并且不会取消选择单元格,您需要在cellForRowAtIndexPath中检查所选索引路径的状态:
答案 1 :(得分:0)
这很容易。当用户选择单元格时,您应该更新数据模型并重新加载表格。数据模型存储按钮状态。在cellForRowAtIndexPath方法中,根据数据模型状态进行设置按钮。就是这样。