2009-12-10 71 views
1

deselectRowAtIndexPath我有文本的几行被选择时,其改变颜色的小区/突出显示。问题在于,当新的viewController被推入时,取消选择动画发生,这在视觉上分散注意力,因为文本突然回复到未选定状态。我已将deselectRowAtIndexPath语句移动到新视图控制器所在的行后面,但这不起作用。问题与的tableView

如何防止用户看到电池取消选择(不执行定时器)?任何帮助,将不胜感激请。

回答

7

我想用表视图和推新的VC所使用的一般模式是,取消选择在viewWillAppear:animated方法表行。然后当VC弹出时,他们会看到哪一行已被用于导航到该VC。

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

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

} 

so so remove yourselectRow from your didSelectRowAtIndexPath method。

+0

谢谢,这是有道理的。但是,我的viewWillAppear方法不是解雇? – RunLoop 2009-12-10 17:55:25

+1

更新:viewWillAppear没有发射,因为我正在使用导航控制器,所以我实现了 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated – RunLoop 2009-12-10 18:07:34

9

如果您使用的是UITableViewController,你会不会需要调用deselectRowAtIndexPath:。当您的表格视图再次可见时,这将自动完成。

如果您没有使用UITableViewController,因为您有更复杂的界面,您需要从viewWillAppear:animated:方法手动拨打deselectRowAtIndexPath:

+0

这很有趣,没有知道这一点琐事。 – wkw 2009-12-10 17:46:09

+0

我使用的是tableViewController,但是当推VC弹出 – RunLoop 2009-12-10 17:58:36

+0

你的子类的UITableViewController该行不会自动取消?如果是这样,你打电话给'[super viewWillAppear]'?如果您阅读UITAbleViewController的Overview部分,我会发现它讨论了UITAbleViewController基类提供的各种行为。 – wkw 2009-12-10 21:09:07