为啥返回 ViewController 时 tableView Cell 会被选中?

Posted

技术标签:

【中文标题】为啥返回 ViewController 时 tableView Cell 会被选中?【英文标题】:Why is the tableViewCell getting unselected on coming back to the ViewController?为什么返回 ViewController 时 tableView Cell 会被选中? 【发布时间】:2013-07-08 14:50:03 【问题描述】:

我的 ViewController 中有一个带有自定义单元格的 tableView,我选择了一个单元格并转到下一个 ViewController。

但是在返回时,单元格会自动取消选择。

这是我第一次看到这样的东西。

我没有在里面写任何东西,viewDidAppear、viewWillAppear、viewDidDisappear 或 viewWillDisappear 的第一个 ViewController 可以做这样的事情。

我用慢速动画在模拟器中运行代码,看看发生了什么。

返回时,单元格仍处于选中状态,但很快选择消失。

我在 customCell 内部的 setSelected:animated: 方法中放置了一个断点来回溯调用它的内容。

这是我看到的......

【问题讨论】:

你有谷歌吗? -setClearsSelectionOnViewWillAppear 在此之前我从未使用过 TableViewController。我习惯了一个普通的 VC 实现委托和数据源。我发现这种行为很奇怪,当我提出问题时,我意识到有一个对 UITableViewController 的 viewWillAppear 的调用,我检查并意识到它可能是那里的默认实现。那么这个答案来了,否则我在 UITableViewController 子类中覆盖了一个空的 viewWillAppear 。所以我不知道b4,谷歌什么,我试过谷歌搜索。 “回到 ViewController 时,tableViewCell 被取消选中”对我不起作用 而我使用在 SO 上获取“返回时取消选择表视图行”作为第一个链接。但是由于这个问题,现在任何人在谷歌上搜索,都会得到这个问题作为最高结果。 【参考方案1】:

这是UITableViewController 的属性,将clearsSelectionOnViewWillAppear 设置为NO

【讨论】:

是的.. 我意识到了。我总是将普通的 ViewControllers 与 TableViews 一起使用,并且习惯于在 VC 本身中实现数据源和委托。我几乎从未使用过 UITableViewController。所以这是我们第一次使用它,感觉很奇怪。 很公平,我也是这样做的,所以我先查看了 UITableView,我只检查了 UITableViewController 的文档,因为我在堆栈跟踪中看到了它 这正是我在发布屏幕截图并提交问题后所做的。我的眼睛盯着 tableVieaController viewWillAppear 然后我意识到.. 到那时你的回答来了,然后是那个downvote。

以上是关于为啥返回 ViewController 时 tableView Cell 会被选中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 chrome.tabs.executeScript 方法的回调结果总是返回一个空对象?

IOS Parses PF Login ViewController在通过Facebook登录时没有调用LoginUser Delegate,为啥?

IOS为啥对一个类调用ViewController进行单元测试

为啥UITableView回到前面时只显示一半的数据

返回viewcontroller 1然后返回viewcontroller 2时,UserDefault没有被保存

在appdelegate类中添加tab bar viewcontroller和DDMenuController