我看到人们这样做的方式不同,我希望当你在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表示选定状态,如果某些单元格通过动画取消选择,则会使应用程序不一致,有些单元格在没有动画的情况下被选中后立即显示。
有没有人有任何想法?
答案 0 :(得分:0)
这取决于您,如果您广泛地自定义应用程序UI,那么您可能根本不想使用此突出显示。也许你有一个复杂的单元格,而不是使用单元格选择触发器深入查看详细视图或其他,也许你的单元格内部会有UIButton
。
在我看来,UIKit想要突出显示单元并保留它的高亮显示,直到你弹出详细视图控制器,此时,大概在viewWillAppear:
,UITableView
的当前选定单元格是取消选择,这使您可以非常精细地指示选择哪个单元格来访问您刚来的地方。
听起来不是很有趣,但是想想如果你退出应用程序并在几个小时之后返回,很高兴有这么小,就像我说的非常微妙的动画。
在我过去做的应用程序中,我倾向于不使用这么多,或者选择但是立即取消选择,因此用户在返回或“返回”列表时看不到取消选择动画。但是,我说我所指的应用程序中的所有单元格都经过了大量定制。