我到处寻找答案,并且尝试实现它,但是没有任何效果。基本上,我需要能够观察VC View 的 subview 数组中的更改。如果从该数组中删除了一个现有 View ,我希望得到有关它的通知并运行一些代码。

可能吗?

编辑-更多信息

我正在尝试修复一个奇怪的极端情况错误,在该情况下,快速点击UISearchDisplayController的UISearchBar(非常自定义)会导致sdController(或更确切地说是navBar效果中的托管searchBar)从 View 中消失,但是sdController仍然是活性。这意味着navBar停留在-y的原点,并且下面的tableView不可滚动。

我最初的想法是进入sdController处于 Activity 状态,但UISearchDisplayControllerContainerView不在 View 层次结构中。我尝试在VC的viewDidLayoutSubviews中对此进行测试,但是,当您点击搜索栏并启动sdController动画时,sdController处于 Activity 状态,并且UISearchDisplayControllerContainerView不在 View 层次结构中:(。

最佳答案

与Apple框架中的大多数属性一样subviews is not KVO compliant

如果您控制 subview 或 super View ,则可以通过子类化和覆盖来观察 View 层次结构的变化:

在 super View 中,您必须覆盖...

- (void)willRemoveSubview:(UIView *)subview

...或者,如果您控制 subview ,则可以覆盖...
- (void)willMoveToSuperview

在删除 View 之前,将同时调用这两种方法。

08-07 00:08