使属于UIView子类的计时器无效

时间:2013-02-04 11:55:13

标签: ios objective-c cocoa-touch uiview uikit

我有一个属于UIView子类的重复计时器。

该类有一个加载它的笔尖,我正在使用ARC。

当UIView是......时,我想使计时器无效。

  1. 从其超级视图中删除
  2. 包含超级视图的ViewController从堆栈中弹出。
  3. 我似乎无法在UIView上找到类似viewDidDisappear的方法。

    有没有其他方法来拦截这个?

    目前,在弹出ViewController后,计时器会继续触发并创建NSLog输出。

2 个答案:

答案 0 :(得分:5)

对于要弹出的视图控制器:只需使用viewDidDisappear或类似名称。还有UINavigationControllerDelegate可能有用。

对于视图本身:您是否尝试在willMoveToSuperview:中使用UIView方法?我还没有验证这一点,但理论上,当视图从超级视图中删除时,视图将转移到超级视图nil

请在您的视图中尝试以下操作:

- (void)willMoveToSuperview:(UIView *)superview {
    if (!superview) {
        // cancel timers
    }
}

还有一个willRemoveSubview:方法,但是会在superview上调用,而不是删除视图。

答案 1 :(得分:0)

您是否尝试在dealloc

中使其无效