web-dev-qa-db-ja.com

UIViewが表示されましたか?

特定のUIViewが画面に表示されているときに、デリゲートまたは何かを取得する方法はありますか?

38
nosuic

これらを試してください:

– didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow
- viewDidAppear:
23
Max

ロジックをUIView内で直接管理する場合は、以下を使用します。

- didMoveToSuperview

UIViewController内でロジックを管理する場合は、以下を使用します。

- viewDidAppear:(BOOL)animated
20

Swiftバージョン。あなたのUIViewクラスの内部:

override func willMove(toWindow newWindow: UIWindow?) {
    super.willMove(toWindow: newWindow)

    if newWindow == nil {
        // UIView disappear
    } else {
        // UIView appear
    }
}
17
buxik

UIViewUIViewController経由で管理している場合は、-viewDidAppear: 方法:

- (void) viewDidAppear:(BOOL) animated {
   //do stuff...
   [super viewDidAppear:animated];
}
8
Jacob Relkin

コントロールが画面に表示されていることを確認する別の方法は、ビューまたはコントロールをサブクラス化し、drawRect...をオーバーライドすることです。

ただし、最初に表示されたときだけでなく、描画されたときにも呼び出されます。ですから、それは時々あなたが望むものです。私の場合はうまくいきました。必ずスーパーにも電話してください! =)

0
Ben