当任何子视图设置为隐藏时通知超级视图

时间:2014-05-14 10:18:04

标签: ios objective-c

我正在为iOS开发一个应用程序,我有一个包含子视图的视图,我希望在其任何子视图设置为隐藏时调用一个函数。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

好的,假设你在名为subview:(UIView *)view wasHidden:(BOOL)hidden的超级视图中实现了一个方法,那么你需要在设置viewToHide.hidden之后调用它:

viewToHide.hidden = YES;
if ([[viewToHide superview] respondsToSelector:@selector(subview:wasHidden:)]) {
    [[viewToHide superview] subview:viewToHide wasHidden:YES];
}

有点粗糙,但我相信它会起作用。一个更好的解决方案可能是让superview通过(自定义)方法进行隐藏,如:

- (void)hideSubview:(UIView *)subview;
- (void)unhideSubview:(UIView *)subview;

然后它可以在(联合国)隐藏之后做它喜欢的事情。

更好的是might be to use KVO,因为已被标记为重复。