ios - 无法在 segue 中取消选中 UITableViewCell

标签 ios objective-c uitableview

我的segue中有这样的代码,来自UITableViewController导航栏中的按钮:

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;
}

最佳答案

因此,您将最后一个选定单元格的 accessoryType 设置为 none,然后调用 reloadData,但在 cellForRowAtIndexPath 中: lastIndexPath 仍然相同,您正在设置复选标记。 在调用 reloadData 之前尝试将 lastIndexPath 设置为 nil。

关于ios - 无法在 segue 中取消选中 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577672/

相关文章:

ios - 如何将水平单元格重新设计为垂直单元格

ios - 将项目从 ObjC 移植到 Swift 后应用程序无法启动

ios - 使用 iOS 7 滑动导航时导航栏故障

ios - 使用 MPMoviePlayer 从广播流获取元数据? (iOS)

objective-c - 如果不存在,在 firebase 中推送一个新节点

swift - 如何消除 UIStoryboard 中 TableView 单元格下方的边框?

ios - 当我在键盘中输入回车键时如何增加 TextView 的高度?

ios - AudioKit 文件规范化

ios - 如何使用 os_log 在控制台应用程序中查看 iOS 设备日志

ios - 当我选择它时,我想将 UITableViewCell 的 subview 从更改背景中排除