在多个窗口上处理视图 - 第二个窗口关闭时 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 的问题的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5如何在第一个窗口关闭时更改第二个窗口

打开第二个窗口后隐藏主窗口?另外,当第二个窗口被用户关闭时,主窗口如何重新出现?

关闭窗口后方法仍在运行

获取第二个窗口将变量传递给主 ui 并关闭

将事件处理程序添加到用户定义的窗口类

如何从弹出视图中关闭第二个视图控制器