iphone - 弹出详细 View 后自动取消选择 TableView 单元格?

标签 iphone ios cocoa-touch uitableview

我已经被这个难住了一段时间了......

当您在 iPhone 的 Apple 电话应用程序中点击联系人的单元格(进入包含联系人详细信息的 View )并点击返回上一个 View 时,会出现一个简短的动画(从蓝色渐变为白色)显示取消选择细胞。这是 Apple 自己的应用程序中所有表格 View 的行为,也是根据他们的人机界面指南推荐的行为。

但是,在我自己的项目中,我一直无法复制这种行为。当我从详细 View 返回时,我的 UITableView 中的单元格都没有被选中。

我查看了 Apple 文档中的 CoreDataBooks 示例代码,它具有所需的单元格取消选择行为,并且表格 View 似乎“自动”获得了行为(没有任何特定的实现)。

我还尝试在这些非常相似的问题中实现解决方案:

What deselect selected cell when navigationController pops a view?

iPhone UITableView cells stay selected

UITableView doesn't keep row selected upon return

但我总是得到相同的结果——当我返回它时,UITableView 中的单元格都没有被选中。 (即使在 View Controller 的 -viewWillAppear: 方法中添加了 [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:animated]; 之后。)

在一个问题的评论中还建议在 -viewWillAppear: 中使用 [[self tableView] reloadData]; 可能会导致单元格无法保持选中状态.但是 CoreDataBooks 做了同样的事情,并且在没有任何特定代码的情况下仍然具有所需的行为(表面上)。

有什么解决问题的建议吗?提前致谢。

附带说明一下,我不太明白为什么要在 -viewWillAppear:(而不是 -viewDidAppear:)中实现取消选择单元格的代码。这不会导致所有事情都发生在表格 View 显示在屏幕上之前吗?这可能只是由于我对 View 的生命周期缺乏正确的理解,但任何澄清都会很好。再次感谢。

最佳答案

您是否尝试过 UITableViewController(不仅仅是 tableview,而是 tableviewcontroller)的 clearsSelectionOnViewWillAppear 属性?如果您将它设置为 NO,它将使选择保持蓝色。
为了获得您想要的效果,您可能还需要添加对
的调用 - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated
以确保它不会永远保持蓝色。

查看 UITableView Documentation 的概述部分开始。

//编辑// 正如下面的评论所述,我们最终所做的是将对 [[self tableview] reloadData]; 的调用移动到 viewDidAppear
我的猜测是 CoreDataBooks 有一个足够复杂的表(包含部分和书籍以及部分和书籍),一些事情随着事件的时间发生。

关于iphone - 弹出详细 View 后自动取消选择 TableView 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823736/

相关文章:

android - 为什么 Play Store 在更新应用程序时需要相同的证书,而 App Store 不需要?

iphone - 在 facebook ios 上上传图片

iphone - 如何调整 UIBarButtonItem 的突出显示颜色?

iphone - UIGestureRecognizer 阻止 UITableView 在 Xcode 4.5 中滚动

iphone - 从 XCode 在设备上运行时禁用调试日志记录

iphone - UIAlertView 迟到了

ios - 如何在 iOS 应用程序中获取设备充电类型?

ios - 是否可以获取触摸的 x 和 y 坐标?

ios - UIScrollView 可以滚动,但不能从用户交互中滚动

objective-c - iPhone 4 上 UIButton 缩放的按钮图像比模拟器或 iPhone 3 上显示的小得多