1

UIView サブクラスに属する繰り返しタイマーがあります。

クラスにはそれをロードする nib があり、私は ARC を使用しています。

UIView が次のいずれかの場合にタイマーを無効にしたいのですが...

  1. スーパービューから削除
  2. その superView を含む ViewController がスタックから取り出されます。

UIView で viewDidDisappear のようなメソッドが見つからないようです。

これを傍受する他の方法はありますか?

現時点では、ViewController がポップされた後、タイマーが起動してNSLog出力を作成し続けます。

4

2 に答える 2

6

ポップされるViewControllerの場合:使用するviewDidDisappearか、同様のものを使用します。UINavigationControllerDelegate役に立つかもしれないこともあります。

ビュー自体についてwillMoveToSuperview:でメソッドを使用してみましたUIViewか?これは確認していませんが、理論的には、ビューがスーパーnilビューから削除されると、ビューはスーパービューに移動します。

したがって、あなたの見解では次のことを試してください。

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

メソッドもありwillRemoveSubview:ますが、ビューが削除されるのではなく、スーパービューで呼び出されます。

于 2013-02-04T12:01:35.693 に答える
0

無効にしてみましたかdealloc

于 2013-02-04T12:01:51.247 に答える