You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 14.2用AppDelegate+UIKit建项目遇黑屏问题求助

解决Xcode 14.2纯AppDelegate+UIKit项目黑屏问题

补充说明

我创建项目时误选了“Multiplatform”而非“iOS”,只需选择“iOS”就能按传统方式创建。


我在Xcode 14.2里尝试创建一个只依赖AppDelegate和UIKit的新项目,不想用SwiftUI或者SceneDelegate,但以前Xcode13及更早版本的方法不管用了。我按以下步骤操作:

  1. 在Xcode 14.2中创建新项目
  2. 添加AppDelegate.swift
import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        window!.rootViewController = MyViewController()
        window!.makeKeyAndVisible()
        return true
    }
}
  1. 添加MyViewController.swift
import UIKit

class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .systemGreen

        print("viewDidLoad() called.")
        print("frame:", view!.frame)
    }
}

启动后能看到打印输出,但屏幕是黑的,还收到这个警告:

[SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)")

虽然知道加UIApplicationSceneManifest键能消警告,但黑屏问题还是没解决——以前不支持多窗口的应用根本不需要这个键啊。我到底漏了什么简单步骤?


问题分析与修复步骤

这问题在Xcode 14+很常见,因为苹果默认把新项目切换到了**场景会话(Scene Session)**架构,哪怕你没加SceneDelegate,系统还是会优先走场景初始化流程,导致你在AppDelegate里手动创建的window没被正确挂载到显示栈上。咱们只要改两个配置就能搞定:

1. 禁用Info.plist中的多场景支持

打开项目的Info.plist文件:

  • 如果里面已经有UIApplicationSceneManifest条目,直接删除它
  • 添加一个新的布尔类型键:UIApplicationSupportsMultipleScenes,把值设为NO

这一步会告诉系统回到传统的单窗口AppDelegate模式,不再尝试初始化场景会话。

2. 清空项目的主界面设置

选中你的项目目标,切换到「Info」标签页:

  • 找到「Main Interface」选项,把它的内容清空(不要留任何Storyboard或SwiftUI文件名)
  • 因为你已经在AppDelegate上标记了@main,Xcode会自动把它作为应用的唯一入口点

做完这两步后重新编译运行,绿色屏幕就能正常显示了,那个场景配置的警告也会消失。


内容的提问来源于stack exchange,提问作者Mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:36:10