在多个窗口上处理视图 - 第二个窗口关闭时 removeFromSuperView 的问题
Posted
技术标签:
【中文标题】在多个窗口上处理视图 - 第二个窗口关闭时 removeFromSuperView 的问题【英文标题】:Working with views on multiple windows - problems with removeFromSuperView on second window closure 【发布时间】:2012-12-10 21:29:23 【问题描述】:您好,我有一个视图,当按下按钮时显示,这工作正常,如果我打开第二个窗口,该视图工作正常,我可以返回前一个窗口并使用我使用 removeFromSuperview 的视图。
但是,我的问题是,如果我关闭最后打开的窗口,则视图不再适用于第一个窗口,但是如果我打开一个新窗口,它会再次适用于第一个窗口。
当其中一个窗口关闭时,如何让视图继续工作?
感谢您的帮助!
这是我正在使用的代码:
-(IBAction) ShowView:(id) sender
[myView setHidden:FALSE];
if ([myView isInFullScreenMode])
[myView exitFullScreenModeWithOptions:nil];
else
[myView enterFullScreenMode:[[myView window] screen] withOptions:nil];
for (NSView *view in [NSArray arrayWithArray:[myView subviews]])
[view removeFromSuperview];
[myView addSubview:view];
【问题讨论】:
尝试改写并更简洁。 我的问题你不明白什么? 我不明白您正在打开和关闭哪些窗口,视图是在哪个窗口上,哪些工作正常。或许可以使用“窗口 A”、“窗口 B”等。让我们知道您在哪个班级提供并展示视图。 好的,我有窗口 A,我打开视图,它工作正常。我创建了一个新窗口(窗口 B)我打开了视图,它显示得很好。我回到窗口 A 并显示视图,它再次显示正常。我关闭了窗口 B,然后尝试在窗口 A 上再次打开视图时它没有显示。除非我打开一个新窗口(我们称之为窗口 B2),然后视图将在窗口 A 和新窗口 B2 中工作。我不明白的是,当稍后的窗口关闭时,为什么视图在窗口 A 上不起作用。 【参考方案1】:您尚未指定“视图不起作用”的含义,但我认为它不会在您期望的时候出现。
如果您要显示与不同窗口关联的不同视图(即视图的副本),则每个视图都应与其窗口一起创建和销毁。
如果您只想要一个视图显示在不同的窗口中或在不同的窗口上,您应该在不同的类中创建视图,例如在您的应用程序委托中。这个类应该独立于管理任何窗口的类来管理视图的内容。
【讨论】:
以上是关于在多个窗口上处理视图 - 第二个窗口关闭时 removeFromSuperView 的问题的主要内容,如果未能解决你的问题,请参考以下文章