0

我见过人们这样做的方式不同,我希望当您在UITableView(例如在屏幕 A 中)选择一个项目时,该项目被突出显示(选择),另一个屏幕 B 被推送到导航堆栈,然后当您返回时从屏幕B到屏幕A,之前选择的项目将被动画取消选择,所以你要做的是放:

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];

里面:

- (void)viewWillAppear:(BOOL)animated;

这就是 Apple 的示例代码所做的。但是我看到很多人在选中该行后立即取消选择该行:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

我知道这可能只是个人喜好,但我想知道官方对此有什么澄清吗?取消选择viewWillAppear:让用户知道他/她之前选择的项目,这是一个奖励,但是对于某些自定义单元格,选择的背景/视图可能不仅仅是纯色,他们可能会在单元格中添加一个 UIView 来表示选择的状态,如果一些单元格被动画取消选择,而一些单元格在没有动画的情况下被选中,这会使应用程序不一致。

有谁有想法吗?

4

1 回答 1

0

这取决于您,如果您要广泛地自定义应用程序 UI,那么您可能根本不想使用此突出显示。也许您有一个复杂的单元格,而不是使用单元格选择触发器来深入查看详细信息视图或其他,也许您的UIButton单元格内部会有一个。

在我看来,UIKit 想要突出显示单元格并保留它的突出显示,直到您弹出详细视图控制器,此时,大概在 中viewWillAppear:,当前选定的单元格UITableView被取消选择,这使您可以有一个非常微妙和简短的指示选择哪个单元格来访问您刚刚来自的地方。

这样说听起来不太有趣,但是想象一下,如果您退出应用程序并在几个小时后返回,那么拥有这个小而且正如我所说的非常微妙的动画是很好的。

在我过去完成的应用程序中,我倾向于不经常使用它,或者选择但立即取消选择,因此用户在返回或“返回”到列表时不会看到取消选择动画。但这就是说,我所指的应用程序中的所有单元格都经过了高度定制。

于 2012-08-13T01:44:05.520 回答