我希望CheckMark根据UITextView的内容在UITableView中选择行

时间:2014-04-17 22:25:21

标签: uitableview uitextview ios7.1

我有一个UITextView,其中填充了来自UITableView( tvServices )的数据;当用户点击UITableView中的一行时,我将该单元格的内容移动到UITextView,之后UITextView的内容存储在CoreData存储中。

当用户选择要更新的记录时,我将存储的UITextView的内容移回UITextView。当用户点击UITextView时,我将整个UITableView显示为UIPopover,UITextView的内容在UITableView中标有复选标记(AccessoryCheck)。

不幸的是,这不是我设计的方式......没有得到任何检查。这是我的代码(这是概念证明 - 我在其中检查UITableView中的每一行以确保它可以完成)。 globalServicesArray 是UITableView单元格的数据源:

for (int i = 0; i < sharedServicesArray.globalServicesArray.count; i++) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:0];

    UITableViewCell *cell = [tvServices cellForRowAtIndexPath:path];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

我希望这是有道理的;如果有更好的方法,我可以提出建议......否则我做错了什么?

1 个答案:

答案 0 :(得分:0)

假设只能编辑一个单元格,可以尝试一下吗?比如,将索引路径存储在类级iVar / Property中。 selectedIndex并重新加载单元格

//To hold the index paths
NSMutableArray *reloadArray = [NSMutableArray array];
if (self.selectedIndex)
{
    //if already selected deselect
    [reloadArray addObject:self.selectedIndex];
}
for (int i = 0; i < sharedServicesArray.globalServicesArray.count; i++) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:0];
    [reloadArray addObject:path];
}
[tvServices reloadRowsAtIndexPaths:reloadArray withRowAnimation:UITableViewRowAnimationNone];

在索引路径的行的单元格中检查索引路径,如果与索引

匹配则检查设置附件
if (self.selectedIndex &&
    self.selectedIndex.row == indexPath.row &&
    self.selectedIndex.section == indexPath.section)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
}