我正在创建一个测试应用程序,尝试在 Mac 上使用 MVC。
我创建了 5 个 nib 文件,每个文件都有不同的窗口,以及每个 nib 的类文件。
我该怎么做才能在按下 MainMenu.xib 上的按钮时打开一个新 View ?
我见过在 iOS 上使用 initWithNibName:
,但找不到它在 Mac 上的工作原理。或者我以错误的方式处理这个问题?如果是这样,如何使用 Xcode 管理 Mac 应用程序中的不同 View 和类?
最佳答案
因为你提到“我创建了 5 个 nib 文件,每个文件都有不同的窗口,每个 nib 都有类文件。”我假设您有 5 个不同的窗口(不是 View )并希望在按下按钮时打开它们。
每个窗口 nib 文件都由 NSWindowController
控制,它是 MVC 中的 C。要实际加载 nib 文件(以编程方式),您可以为其分配一个 NSWindowController ; OS X 中的 NSWindowController
与 iPhone 上的 UIViewController
相当。
NSWindowController *controller = [[NSWindowController alloc] initWithWindowNibName:@"nib1"]
然后你可以打开/关闭 NSWindowController 管理的窗口。
[controller showWindow:nil]
显示窗口
[controller.window makeKeyAndOrderFront:self]
使窗口成为关键窗口。
不过,您可能打算做其他事情,即保留相同的窗口,但切换该窗口的内容 View 。在这种情况下,您需要包含 View (并使用 NSViewControllers 加载它们)的 nib 文件,而不是窗口(因为拥有窗口是多余的)。
但即使你坚持使用 Windows,也要替换 contentView:
[currentWindow setContentView:[newWindowController.window contentView]];
<小时/>
您应该阅读 Apple 提供的有关 Windows、 View 和应用程序的所有文档。
关于objective-c - initWithNibName : on OSX? 相当于什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165078/