iOS我的UIView在屏幕上可见吗?

时间:2014-10-08 11:18:36

标签: ios uiview swift nstimer

我有一个自定义UIView,带有计时器显示当前时间,该时间设置在UITableViewCell内。有没有办法检测用户是否不再查看此自定义UIView(通过导航到其他选项卡)?当我的UIView在屏幕上不再可见时,我想停止此计时器。我正在使用Swift。

我看到我可以覆盖一个名为didMoveToWindow的方法,当我更改标签时似乎会触发该方法,但我对iOS不太熟悉以及要查找的方法或属性如果视图实际上对用户可见或不在屏幕上显示。

我需要某种被调用的方法,类似于viewDidAppear的{​​{1}}和viewDidDisappear

提前致谢!

2 个答案:

答案 0 :(得分:11)

我找到了一个符合此目的的答案,只需覆盖didMoveToWindow并检查self.window是否为零:

override func didMoveToWindow() {
    if (self.window == nil) {
        timerStop()
    } else {
        timerStart()
    }
}

答案 1 :(得分:0)

当视图不再显示给用户时处理操作的最佳做​​法是覆盖viewWillAppear和viewDidDisappear函数。

启动计时器:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    timerStart()
}

然后停止你的计时器:

override func viewDidDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    timerStop()
}