当任何一个子视图被设置为隐藏时,通知其父视图。

3

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

有没有人能指点我正确的方向?


子视图如何设置为隐藏? - trojanfoe
viewToHide.hidden = YES; - poyo fever.
参考网址: 有人已经回答了 https://dev59.com/NWQn5IYBdhLWcg3wLkod - Gopal Raju
1个回答

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;

然后(取消)隐藏后,它可以随心所欲地进行操作。

更好的做法可能是使用KVO,这已被标记为重复内容。(参考链接)


谢谢您的回复。这个方法可以工作,但我想通过观察隐藏属性的变化来实现它。 - poyo fever.
2
@poyofever。是的,这很公平。你需要的答案已经在这个页面的几个地方链接了。 - trojanfoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接