如何停止来自其他 viewController 的计时器
How to stop a timer from other viewControllers
我从没想过这会很复杂,但显然是这样。
我有一个选项卡式视图控制器。其中一个 ViewController 有一个计时器。
一旦使用选项卡控制器选择了另一个视图控制器,或选择了任何其他视图(使用 table 视图行选择),我希望计时器停止。
我不确定为什么,但我不知道该怎么做。我假设我可以将 timer.invalidate() 放在与选项卡选择关联的 ViewController 中的 viewDidAppear() 中,但它不起作用。
有什么建议吗?
尝试使用tabBarController:didSelectViewController:
Tells the delegate that the user selected an item in the tab bar.
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if (viewController == targetViewController) {
viewController.timer.invalidate()
}
}
视图有许多可以接收的通知,您可以为其编写处理程序。
正如我的评论中提到的,其中一个是 viewWillDisappear。
他们是:
viewWillAppear:
viewDidAppear:
viewWillDisappear:
viewDidDisappear:
它们一起让您对视图的来来去去做出反应。
关于 UIViewController 和 UIView 的文档比其他任何文档都值得花时间深入阅读,因为它们是 Cocoa 中所有显示和交互的基础。
我从没想过这会很复杂,但显然是这样。
我有一个选项卡式视图控制器。其中一个 ViewController 有一个计时器。
一旦使用选项卡控制器选择了另一个视图控制器,或选择了任何其他视图(使用 table 视图行选择),我希望计时器停止。
我不确定为什么,但我不知道该怎么做。我假设我可以将 timer.invalidate() 放在与选项卡选择关联的 ViewController 中的 viewDidAppear() 中,但它不起作用。
有什么建议吗?
尝试使用tabBarController:didSelectViewController:
Tells the delegate that the user selected an item in the tab bar.
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if (viewController == targetViewController) {
viewController.timer.invalidate()
}
}
视图有许多可以接收的通知,您可以为其编写处理程序。
正如我的评论中提到的,其中一个是 viewWillDisappear。
他们是:
viewWillAppear:
viewDidAppear:
viewWillDisappear:
viewDidDisappear:
它们一起让您对视图的来来去去做出反应。
关于 UIViewController 和 UIView 的文档比其他任何文档都值得花时间深入阅读,因为它们是 Cocoa 中所有显示和交互的基础。