viewDidAppear之后的代码执行?

时间:2016-04-28 19:48:10

标签: ios uiviewcontroller viewdidappear

  

好的,我遇到了一个奇怪的问题,导致我提出问题 - 在viewDidAppear之后是否有任何代码运行?

这里有更多信息。我有一个带自定义单元格的tableViewController(TVC)。其中一个单元格有一个按钮作为附件。加载此TVC时,将设置按钮的backgroundColor。使用按钮选择单元格会显示带有颜色选择器(CPVC)的视图控制器。当CPVC被解雇时,它首先运行onDismissal块(在TVC中设置)以调整TVC中按钮的颜色。到目前为止,代码运行良好,并且在取消颜色选择器视图控制器时设置按钮的颜色。

我发现的问题是在按钮的颜色设置之后,由于某种原因它会在~0.25秒后重置为之前的颜色。您可以看到颜色选择器集中选择的颜色,然后按钮的颜色过渡到其先前的颜色。我不明白为什么会这样。当我在调试器中检查局部颜色变量时,它们都会更新为新颜色,并且不确定对前一颜色的引用仍然存在的位置。我已将NSLog语句插入到TVC的viewDidAppear方法中,并确认在取消颜色选择器后,按钮的颜色设置为用户的任何颜色在viewDidAppear方法结束时选择。之后只有颜色发生变化。在viewDidAppear之后运行的是什么?

1 个答案:

答案 0 :(得分:0)

用户rmady带领我朝着正确的方向前进。从来不知道UITableViewControllers重置了viewWillDisappear上的tableView。根据文件:

  

当表视图即将在第一次加载时出现时,表视图控制器会重新加载表视图的数据。每次显示表格视图时,它还会清除其选择(有或没有动画,具体取决于请求)。 UITableViewController类在超类方法viewWillAppear中实现它:您可以通过更改clearsSelectionOnViewWillAppear属性中的值来禁用此行为。

所以我所要做的就是将clearsSelectionOnViewWillAppear设置为NO,一切正常。谢谢rmady