gpt4 book ai didi

cocoa - 在 xcode 8.3 中创建仅 XIB 的 Cocoa 项目

转载 作者:行者123 更新时间:2023-12-03 16:10:22 25 4
gpt4 key购买 nike

我正在尝试在 XCode 8.3 中创建基于 XIB 的应用程序,但“在没有 Storyboard 的情况下启动项目”的选项已被删除。以下是我设置项目所采取的步骤:

  1. 创建一个新的 Cocoa 应用程序。
  2. 删除主 Storyboard
  3. 删除 ViewController.swift
  4. 向项目添加一个新文件 - Cocoa 类 - 的子类NSWindowController,同时创建 XIB 文件,选中 - 命名为 MainWindowController
  5. 在常规项目信息下 - 删除主界面对 Main 的引用
  6. 在应用程序委托(delegate)中:添加 var mainWindowController: NSWindowController?在applicationDidFinishLaunching中添加

    让 mainWindowController = MainWindowController(windowNibname: "MainWindowController")

    mainWindowController.showWindow(self)

    self.mainWindowController = mainWindowController

  7. 在信息部分下的项目首选项中添加主 nib 文件基本名称 MainWindowController

当我运行它时,它确实会显示我的窗口,但是我收到错误:

无法将(窗口)导出从(NSApplication)连接到(NSWindow):缺少 setter 或实例变量

如果我添加任何控件并连接它们,我会收到类似的错误,指出它们无法连接。

菲尔

最佳答案

Xcode 9 及更高版本的更新

在 Xcode 9.0 及更高版本(至少 9.4 beta 1)中,您可以再次配置 Cocoa App 项目模板以使用 MainMenu.xib 而不是 Main.storyboard。只需确保在为新项目选择选项时未选中“使用 Storyboard ”选项即可:

Xcode 9 Cocoa App template project options

原版

您的“主界面”设置应指向包含应用程序主菜单栏的 Storyboard或 XIB。您可以使用“应用程序”文件模板或“主菜单”文件模板创建包含主菜单栏的 XIB。

templates containing a main menu bar

以下是从头开始创建一个项目的步骤,该项目的主菜单栏位于一个 XIB 文件中,窗口位于单独的 XIB 文件中:

  1. 使用“Cocoa Application”模板创建一个新项目。

  2. 删除“Main.storyboard”和“ViewController.swift”(或“ViewController.h”和“ViewController.m”)。

  3. 使用用户界面部分中的“主菜单”模板创建一个新文件(文件 > 新文件...)。将其命名为“MainMenu”(Xcode 将自动添加“.xib”扩展名)。

  4. 在目标的常规设置选项卡中,将主界面设置从“Main”更改为“MainMenu.xib”。

  5. 在“MainMenu.xib”中,将 NSObject 添加到文档大纲中。将其自定义类设置为“AppDelegate”。演示:

    adding an NSObject and setting its class

  6. 在“MainMenu.xib”中,将“File's Owner”(应具有类“NSApplication”)的“delegate”导出连接到“App Delegate”对象。为此,请按住 Ctrl 键并从文档大纲中的“文件所有者”拖动到“应用程序委托(delegate)”。然后从弹出列表中选择“委托(delegate)”。

  7. 使用“Cocoa Class”模板创建一个新文件。将类名称设置为“MainWindowController”,并将子类名称设置为“NSWindowController”。确保选中“同时为用户界面创建 XIB 文件”。

  8. 在“MainWindowController.swift”中,添加 windowNibNameowner 的覆盖:

    class MainWindowController: NSWindowController {

    override var windowNibName: String? { return "MainWindowController" }
    override var owner: AnyObject { return self }
  9. 在“AppDelegate.swift”中,添加代码来创建并显示 MainWindowController 的窗口:

    class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(_ aNotification: Notification) {
    mainWindowController = MainWindowController()
    mainWindowController!.showWindow(nil)
    }

    var mainWindowController: MainWindowController?

您现在可以在“MainWindowController.xib”中创建其他对象,并将它们连接到“MainWindowController.swift”中的导出和操作。

关于cocoa - 在 xcode 8.3 中创建仅 XIB 的 Cocoa 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com