视图不再位于视图堆栈顶部时的事件
问题描述:
有没有办法告诉视图何时不再位于视图堆栈顶部?例如,模式视图被推到视图堆栈的顶部?视图不再位于视图堆栈顶部时的事件
所以我有一个视图与表视图,并有一些事件,导致模态显示。当模式被解雇时,我想重新加载我的表中的数据。
是否有我可以订阅的事件来实现此目的?也许这是可能的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];}];
答
你可以找到一个子命令通过使用其subviews
属性在容器视图中显示。
从文档:
@属性(非原子,只读副本)的NSArray *子视图
讨论
您可以使用此属性检索与 您的自定义视图相关联的子视图层次结构。数组 中子视图的顺序反映了它们在屏幕上的可见顺序,索引0 的视图是最靠后的视图。
对于UIKit中和其他系统框架中声明复杂的视图,该视图的任何 子视图通常被认为是专用的,并且在任何时候 变化。因此,您不应尝试检索或修改这些类型的系统提供的视图的子视图。如果这样做, 您的代码可能在未来的系统更新期间中断。
我想过类似的东西,但我必须在我显示的每个视图控制器中手动发布通知。有几种不同的模式显示未来可能会增加更多功能。我最终使用了当我感兴趣的数据发生变化时发布的自定义通知。 – NMunro 2014-09-23 16:09:31