1. ホーム
  2. ios

[解決済み] UIView - ビューがロードされたときに通知を受けるには?

2023-08-16 05:15:47

質問

のようなものはあるのでしょうか? viewDidLoadUIViewController に対して UIView ??? が発生したらすぐに知らせてほしい。 UIView がロードされたらすぐに通知される必要があります (Subclass of UIView のサブクラス)をロードし、何らかのアクションを実行します。

どのように解決するのですか?

どのような動作をさせるかによって、いくつかのテクニックがあります。

  1. -(id)initWithFrame:(CGRect)frame - UIViewの指定された ビューを初期化するために、常にUIViewに送られる。 ビューが nib からロードされない限り、初期化するために常に UIView に送られます。
  2. -(id)initWithCoder:(NSCoder *)coder - ビューが nib からロードされるときは常に UIView を初期化するために送られます。
  3. -(void)awakeFromNib - nib 内のすべてのオブジェクトが初期化され、接続された後に送信されます; nib からオブジェクトをロードした場合のみ適用可能です; super を呼び出す必要があります。
  4. -(void)willMoveToSuperview:(UIView *)newSuperview - ビューが他のビューのサブビューとして追加される直前に送信されます。 newSuperview は、そのスーパービューからビューを削除するときに、nil になるかもしれません。
  5. -(void)willMoveToWindow:(UIWindow *)newWindow - ビュー(またはそのスーパービュー)がウィンドウに追加される直前に送られます。 newWindow は、ウィンドウからビューを削除する時には、nil であるかもしれません。
  6. -(void)didMoveToSuperview - ビューがビュー階層に挿入された直後に送信されます。
  7. -(void)didMoveToWindow - ビューがそのウィンドウプロパティを設定された直後に送信されます。 -

基本的には、初期化時(1 & 2)、nibからの読み込み後(3)、ビュー階層への挿入前(4 & 5)、その後(6 & 7)からアクションの実行を選択することができます。