0

このビューが画面に表示されるときに CustomView クラスでどのような通知を受け取るかを知りたいです。

CustomView *customView = [[CustomView alloc] init];
[self.view addSubview:customView];
NewViewController *newController = [[NewViewController alloc] init];
[self.navigationController pushViewController:newController animated:YES];

そして、いくつかの作業の後、このviewControllerをポップします。

[self.navigationController popViewControllerAnimated:YES];

そのビューが画面に再び表示されるときに CustomView クラスのどのメソッドが呼び出されるかを知りたいです。

実際には、その CustomView に無限ループ アニメーションがあり、nextController にプッシュすると、そのアニメーション ループを停止する必要があり、戻ってきた後にもう一度開始する必要があります。

4

3 に答える 3

1

UIView が取得できない

viewWillAppear
viewDidDisappear 
etc

ただし、それが含まれているViewControllerには含まれているため、UIViewに渡すには、次のメソッドを実装する必要があります。

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   [[self.view.subviews objectAtIndex:0] viewWIllAppear]; // i assume your subview is the only one, otherwise you need to know the index, or have it as an ivar/property 
}

別のアイデア - ビューをよく使用するため、ビューを再作成しないと仮定します。[[UIApplication sharedApplication] delegate] のプロパティにします。これで、次のようにアクセスできます。

#define SharedView [(appDelegate*)[[UIApplication sharedApplication] delegate] sharedView];

次に、カスタム UIViewController を作成し、viewWillAppear を上書きします。

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  if ( [SharedView.superview isEqual:self.view] )
  {
     [SharedView viewWillAppear];
  }
}
于 2012-05-11T16:47:12.910 に答える
0

あなたは見ましたか: UIView

Observing View-Related Changes
– didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow
于 2012-05-11T21:10:58.373 に答える