Xcode 14.2用AppDelegate+UIKit建项目遇黑屏问题求助
解决Xcode 14.2纯AppDelegate+UIKit项目黑屏问题
补充说明
我创建项目时误选了“Multiplatform”而非“iOS”,只需选择“iOS”就能按传统方式创建。
我在Xcode 14.2里尝试创建一个只依赖AppDelegate和UIKit的新项目,不想用SwiftUI或者SceneDelegate,但以前Xcode13及更早版本的方法不管用了。我按以下步骤操作:
- 在Xcode 14.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 } }
- 添加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
相关产品推荐
相关产品推荐

