无法在segue中取消选中UITableViewCell

时间:2014-07-04 15:45:54

标签: ios objective-c uitableview

我通过UITableViewController

导航栏中的按钮在我的segue中有这样的代码
if ([segue.identifier isEqualToString:@"groupInitialSelect"]) {
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.lastIndexPath];
    cell.accessoryType = UITableViewCellAccessoryNone;

    [self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
    [self.tableView reloadData];
    TTPDepartment *dep = [self.departmentList objectAtIndexedSubscript:self.lastIndexPath.row];
    TTPGroupViewController *controller = [segue destinationViewController];
    controller.selectedDepartment = dep;
}

当我执行segue并返回时,我看到仍然检查了单元格。奇怪的是,scrollRectToVisible在同一时间滚动回到顶部。

每个选择都会更新

self.lastIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath     *)indexPath;
{
self.lastIndexPath = indexPath;
self.nextButton.enabled = YES;
[tableView reloadData];
}

我检查cellForRowAtIndexPath中的列表元素:

if ([indexPath compare:self.lastIndexPath] == NSOrderedSame)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
}

1 个答案:

答案 0 :(得分:1)

因此,您要为最后选择的单元格设置accessoryType为无,然后致电reloadData,但在cellForRowAtIndexPathlastIndexPath仍在同样的,你设置复选标记。 在致电lastIndexPath之前尝试设置为nil reloadData