我有一个UIView
,其中包含很多组件,如果删除了视图或者弹出/推送了其父视图控制器,我想更新其中的一些组件。 UIView
是否可以获取此信息
与UIViewController
-(void)viewWillAppear;
想要像
这样的东西-(void)UIViewWillAppear;
编辑我看到的一些评论:
我会再解释一下
但是我有一个特殊的情况,UIView需要在它自己的顶部添加一个“浮动视图”(想象一下缩放/平移/滚动UISCrollView子类,浮动在它自己的顶部),这样当它滚动浮动视图时相对于超级视图到位。我尝试重新计算-(void)layoutSubviews
方法中“浮动”的新来源,但重新放置非常不稳定。为了解决这个波动性问题,自定义UIView添加了浮动视图(理论上是它的子视图)作为其超级视图的子视图(有点绕口令:))。
现在,当删除自定义UIView(或者其包含视图控制器被推离屏幕外)时出现问题。特殊的UISCrollView如何从superView中删除浮动视图。
答案 0 :(得分:2)
您可以覆盖willMoveToSuperview:
以查明何时将视图插入层次结构以及何时将其删除。这可能不是你想要的,因为视图可以是层次结构的一部分而不是自己插入。
要查看屏幕上是否使用willMoveToWindow:
。如果参数为非零,则视图才会成为可见视图层次结构的一部分。
如果您在更改后需要执行某些操作,请使用didMoveToWindow:
。
答案 1 :(得分:0)
UIView不会“随机”出现/消失或者他们想要 - 你的视图控制器(或代码)控制它。因此,您应该在何时展示它们并找到所需的代码。
答案 2 :(得分:0)
UIView class reference有一些kvo观察变化。
通过实施-(void)willRemoveSubview:(UIView *)subview
,您可以看到相反的方向。
更新阅读完解释后:
我希望我理解正确。我之前做过类似的事情,但使用的是UITableView而不是UIScrollView(但它们在下面完全相同)。
这就像一个弹出式细节视图。我已经解决了,你已经解决了将详细信息视图添加到UITableView超级视图,然后我在详细视图中添加了一个关闭的UIButton,并带有相应的IBOutlet:
@interface CustomUIView : UIView
@property(nonatomic,weak) IBOutlet UIButtonView *closingButton;
-(void)closeDetail:(IBAction)action;
@end
并且行动只是:
-(void)closeDetail:(IBAction)action {
// do your cleaning/change to the detail subviews
[self removeFromSuperview]; // <-- clsoe the detail view
}
sdsds