看来,UIView并没有像“didRemoveFromSuperview
”或“willRemoveFromSuperview
”这样的方法。那么,如何在UIView从它的超级视图中删除时监听事件?我应该使用KVO?提前致谢!如何在UIView从它的超级视图中分离时得到通知?
8
A
回答
4
你可以继承你的UIView,并从- (void)removeFromSuperview
方法发布通知。
+12
我找到了.Api文档说: willMoveToSuperview: 通知接收者其超级视图即将更改为指定的超级视图(可能为零)。 ----------------------------------------- 当这个方法被调用并且该参数为零,视图正在被删除 – Jagie 2010-06-19 10:15:33
19
这个主题是很老,但我发现了一个办法做到这一点。自从谷歌搜索是不够的帮助,这(从UIView的的文档拍摄)
观察查看相关的变化
- didAddSubview:
- willRemoveSubview:
- willMoveToSuperview:
- didMoveToSuperview
- willMoveToWindow:
- didMoveToWindow
13
这个工程(上iOS8上测试):
-(void) didMoveToWindow {
[super didMoveToWindow]; // (does nothing by default)
if (self.window == nil) {
// YOUR CODE FOR WHEN UIVIEW IS REMOVED
}
}
的这种默认实现方法做什么都没有。当窗口改变时,子类可以覆盖它以执行其他操作。
的窗口属性可能是nil ... 当接收器刚刚被从它的父或除去这发生在接收器刚刚被添加到未附加到窗口一个上海华。
0
- (void) willMoveToSuperview: (UIView *) newSuperview{
if(newSuperview == nil){
// UIView was removed from superview
} else {
// UIView was added to superview
}
}
相关问题
- 1. UIView - 如何加载视图时得到通知?
- 2. UIView。我如何将子视图放在它的父级超级视图
- 3. UIViewController在收到通知后从超级视图中删除
- 4. 何时发布从超级视图中移除的UIView
- 5. 发送按钮上的值点击从UIView到它的超级视图的超级视图(UIViewController)-iOS
- 6. 如何在运行时从超级视图中删除视图?
- 7. 如何在IB中设置UIView子视图大于其父级超级视图?
- 8. 如何在UIView变得可见时得到通知?
- 9. 如何在超级视图中移动UIView
- 10. 将视图移动到新的超级视图会自动从旧的超级视图中释放它吗?
- 11. 将它添加到超级视图/作为子视图后访问UIView
- 12. 如何在UIView完全加载时得到通知
- 13. 如何从swift中的UIScrollView内的超级视图中删除UIView或UIButton
- 14. MFMailComposeViewController:如何在视图出现时得到通知?
- 15. 如何将UIView子类作为子视图添加到另一个视图时得到通知?
- 16. 将UIView添加到超级视图中的卷曲过渡
- 17. iPhone UIView问题。如何在UIView完全隐藏时得到通知?
- 18. 将modalViewController从超级视图中移除后UIView消失
- 19. UIView缓慢地从超级视图中删除
- 20. 如何从视图中分离模型?
- 21. 如何使UIViewController的视图坚持到它的超级视图的底部?
- 22. 当它从超级视图中移除时,视图不是动画
- 23. Xamarin - 如何获得一个子视图的索引到一个超级视图
- 24. 问题:当它移出超级视图时,子视图在超级视图顶部出现
- 25. 从超级视图中删除视图时出错
- 26. 如何从UIView切换到UITable视图?
- 27. 超级视图中的中心视图
- 28. 无法从它的超级视图中删除UILabel
- 29. 如何获得scrollview子视图相对于scrollview超级视图的中心点?
- 30. UIView甚至在开始从超级视图中删除后重新出现
你知道何时删除视图,因为你在代码中执行它?只需将代码连接到此处或辅助函数即可。 – Eiko 2010-06-19 08:55:07