objective-c – 如何在Cocoa应用程序中切换视图?

objective-c – 如何在Cocoa应用程序中切换视图?,第1张

概述所以我开始学习如何使用 Cocoa.我想我已经得到了它,但我已经挂断了创建和切换视图.我正在重写我之前做过的练习游戏.我想要的只是一个窗口(最好不能调整大小),我希望能够在游戏中切换不同屏幕的视图. 首先,我有主菜单(开始游戏,高分,退出).然后我需要一个窗口为每个屏幕(游戏屏幕,高分屏幕). 我对此感到困惑的是如何设计它.我查找了NSViewController,认为它管理视图,但事实并非如此. 所以我开始学习如何使用 Cocoa.我想我已经得到了它,但我已经挂断了创建和切换视图.我正在重写我之前做过的练习游戏.我想要的只是一个窗口(最好不能调整大小),我希望能够在游戏中切换不同屏幕的视图.

首先,我有主菜单(开始游戏,高分,退出).然后我需要一个窗口为每个屏幕(游戏屏幕,高分屏幕).

我对此感到困惑的是如何设计它.我查找了NSVIEwController,认为它管理视图,但事实并非如此.它只通过加载它来管理一个视图.我不明白为什么我需要使用NSVIEwController.难道我不能只有一个包含多个NSVIEw子类的窗口类并加载它们吗?我不确定我是否了解VIEwController的用途.

我的Window类真的需要子类化NSWindowController吗?我试图按照Apple的VIEwController示例的例子,它有一个窗口控制器类,它是NSWindowController的子类.我没有看到子类化的目的是什么.所有NSWindowController似乎都添加了 – initWithPath:(Nsstring *)newPath但是当我可以编辑pList文件以在启动时打开窗口时,我无法看到它的用法. Apple的例子还有一个NSVIEw变量和一个NSVIEwController变量.您是否只需要一个变量来存储当前视图?

先谢谢你们,我真的很困惑这是怎么回事.

解决方法 听起来你正试图在窗口内换出内容视图?如果是这种情况,您可以使用 – [NSVIEw replaceSubvIEw:with:] – [NSWindow contentVIEw]作为接收者.

假设您有一个名为TitleVIEw的标题页和一个名为menuVIEw的菜单页,您想要将它们交换进应用程序的主窗口.如果标题页可见并且用户点击“主菜单”按钮或链接,您可以在按钮的委托方法中输入类似的内容:

[[[NSApp mainWindow] contentVIEw] replaceSubvIEw:TitleVIEw with:menuVIEw];

有两点需要注意:

>此视图中将显示旧视图(本例中为TitleVIEw).如果您希望它仍然可用,则必须在更换之前保留它.
>如果您的页面具有不同的尺寸,则父视图不会调整大小.更改窗口的帧大小,因此contentVIEw很容易,但您可以在混合中添加一些Core Animation以赋予它一些风格.

我希望这有帮助!

总结

以上是内存溢出为你收集整理的objective-c – 如何在Cocoa应用程序中切换视图?全部内容,希望文章能够帮你解决objective-c – 如何在Cocoa应用程序中切换视图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存