视图不再位于视图堆栈顶部时的事件

问题描述:

有没有办法告诉视图何时不再位于视图堆栈顶部?例如,模式视图被推到视图堆栈的顶部?视图不再位于视图堆栈顶部时的事件

所以我有一个视图与表视图,并有一些事件,导致模态显示。当模式被解雇时,我想重新加载我的表中的数据。

是否有我可以订阅的事件来实现此目的?也许这是可能的KVO?

您可以使用NSNotification系统。

在你的UITableViewController你会为NSNotification注册(假设的NSString * notifName = @ “dismissmv”):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hasDismissed:) notifName object:nil]; 

和实施

-(void)hasDismissed:(NSNotification *)notification 

然后,当你将解雇视图 - 控制你”我会发布通知:

[self dismissViewControllerAnimated:true completion:^{[[NSNotificationCenter defaultCenter] postNotificationName:notifName object:nil];}]; 
+0

我想过类似的东西,但我必须在我显示的每个视图控制器中手动发布通知。有几种不同的模式显示未来可能会增加更多功能。我最终使用了当我感兴趣的数据发生变化时发布的自定义通知。 – NMunro 2014-09-23 16:09:31

你可以找到一个子命令通过使用其subviews属性在容器视图中显示。

从文档:

@属性(非原子,只读副本)的NSArray *子视图

讨论

您可以使用此属性检索与 您的自定义视图相关联的子视图层次结构。数组 中子视图的顺序反映了它们在屏幕上的可见顺序,索引0 的视图是最靠后的视图。

对于UIKit中和其他系统框架中声明复杂的视图,该视图的任何 子视图通常被认为是专用的,并且在任何时候 变化。因此,您不应尝试检索或修改这些类型的系统提供的视图的子视图。如果这样做, 您的代码可能在未来的系统更新期间中断。