Swift AppDelegate如何知道要显示的视图?

Swift AppDelegate如何知道要显示的视图?,swift,xcode,Swift,Xcode,我不熟悉Xcode和Swift GUI编程。 当我在Xcode(MacOs游戏项目)中启动一个新项目时,它会创建一个启动Hello World程序。默认的AppDelgate.swift代码如下所示。当我运行它并显示“Hello World”时,它就会工作。我知道这段代码是代码执行的“主要”起点,尽管我找不到@NSApplicationMain属性的官方文档 我的问题是,这段代码如何知道在ViewController.swift文件中显示视图?AppDelegate.swift代码基本上为空,没

我不熟悉Xcode和Swift GUI编程。 当我在Xcode(MacOs游戏项目)中启动一个新项目时,它会创建一个启动Hello World程序。默认的AppDelgate.swift代码如下所示。当我运行它并显示“Hello World”时,它就会工作。我知道这段代码是代码执行的“主要”起点,尽管我找不到@NSApplicationMain属性的官方文档

我的问题是,这段代码如何知道在ViewController.swift文件中显示视图?AppDelegate.swift代码基本上为空,没有实际代码。它如何知道要显示的ViewController?它怎么知道要做什么

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    
    
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Insert code here to initialize your application
    }
    
    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
    
    
}

这是通过
Info.plist
确定的。检查目标的设置,您会发现一个名为“主界面”的条目,它指向故事板或nib文件。

这是通过
Info.plist
确定的。检查目标的设置,你会发现一个名为“主界面”的条目它指向情节提要或nib文件。

项目导航器
中选择项目文件,您将能够看到
主界面
值设置为
Main
,这意味着
Main。情节提要
文件将用作主界面。你可以删除它,你会发现应用程序不再显示视图控制器

您可以删除
项目导航器中提供的
主界面
,并在类似这样的Cocoa应用程序上覆盖
AppDelegate中的
contentViewController

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    var window: NSWindow?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        window = NSWindow(contentViewController: ViewController())
        window?.makeKeyAndOrderFront(nil)
    }
}

项目导航器
中选择项目文件,您将能够看到
主界面
值设置为
Main
,这意味着
Main。情节提要
文件将用作主界面。你可以删除它,你会发现应用程序不再显示视图控制器

您可以删除
项目导航器中提供的
主界面
,并在类似这样的Cocoa应用程序上覆盖
AppDelegate中的
contentViewController

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    var window: NSWindow?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        window = NSWindow(contentViewController: ViewController())
        window?.makeKeyAndOrderFront(nil)
    }
}

感谢提供有关如何使用(Swift)源代码显式调用窗口的额外信息。感谢提供有关如何使用(Swift)源代码显式调用窗口的额外信息。