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

时间:2014-09-23 15:08:03

标签: ios objective-c uiview uiviewcontroller uikit

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

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

是否有我可以订阅的活动来实现这一目标?也许这对KVO来说是可能的吗?

2 个答案:

答案 0 :(得分:1)

您可以使用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];}];

答案 1 :(得分:0)

您可以使用subviews属性在容器视图中找到子视图的顺序。

来自文档:

  

@property(非原子,只读,复制)NSArray *子视图

     

讨论

     

您可以使用此属性检索与之关联的子视图   您的自定义视图层次结构。数组中子视图的顺序   在视图0处反映其在屏幕上的可见顺序   是最后面的观点。

     

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