从子视图中删除视图不会调用 willRemoveSubview
Posted
技术标签:
【中文标题】从子视图中删除视图不会调用 willRemoveSubview【英文标题】:Removing view from subview does not call willRemoveSubview 【发布时间】:2012-12-13 01:11:27 【问题描述】:我有一个管理视图控制器,当用户选择一个菜单项时,它会切换一组先前分配的子视图控制器。
当我切换到视图控制器时,我将管理视图控制器的视图连接到子视图控制器中的视图。
[mvc.view addSubview:subvc.view];
似乎一切正常。
但是,当从视图层次结构中删除该子视图控制器的视图时(例如,在应用程序中切换页面时):
[subvc.view removeFromSuperview];
自定义视图类中的 willRemoveSubview 方法永远不会触发。我已经确认,当我调用 removeFromSuperview 时,我是在自定义视图类的实例上调用它。我的自定义视图类中的其他方法确实会触发,例如 viewWillMoveToWindow。
NSView 参考文档说应该调用这个方法?
谁能说明为什么这不起作用?
我在 10.8.2 上运行,使用 Xcode 4.5.2 为 10.7 编译
谢谢
达伦。
【问题讨论】:
您是否覆盖了任何修改视图层次结构的方法,例如 -removeFromSuperview、-addSubview 等? 【参考方案1】:willRemoveSubview:
,顾名思义,是在超级视图上调用的,而不是被移除的子视图。
【讨论】:
谢谢,我完全误解了 Apple 文档。我现在将该方法放在超级视图的客户 NSView 类中,一切正常。以上是关于从子视图中删除视图不会调用 willRemoveSubview的主要内容,如果未能解决你的问题,请参考以下文章