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

你自己回答了。

viewWillAppear
于 2012-05-11T16:41:59.743 回答
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] 委托] 的属性。现在您可以像这样访问它:

#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 回答