如何从其他viewControllers停止计时器

时间:2015-09-28 19:50:57

标签: swift nstimer

我从未想过这会很复杂,但显然确实如此。

我有一个标签式视图控制器。其中一个ViewControllers有一个计时器。

一旦使用选项卡控制器选择了另一个视图控制器,或者选择了任何其他视图(使用表视图行选择),我希望计时器停止。

我不知道为什么,但我无法弄清楚如何做到这一点。我假设我可以将view.idvalidate()放在与选项卡选择关联的ViewControllers中的viewDidAppear()中,但它不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

尝试使用tabBarController:didSelectViewController:

  

告诉代表用户在标签栏中选择了一个项目。

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
  if (viewController == targetViewController) {
    viewController.timer.invalidate()
  }
}

答案 1 :(得分:0)

视图有许多可以接收的通知,您可以为其编写处理程序。

正如我的评论所述,其中一个是 viewWillDisappear

他们是:

  • viewWillAppear中:

  • viewDidAppear:

  • viewWillDisappear:

  • viewDidDisappear:

它们可以让您对观看的进展和反应做出反应。

UIViewController和UIView上的文档值得花时间深入阅读,因为它们是Cocoa中所有显示和交互的基础。