【发布时间】:2022-01-22 14:18:15
【问题描述】:
我有一个应用程序,我正在尝试制作一个简单的 collectionView。如果我使用 is initial View Controller 从 Main.storyboard 运行,collectionView 工作正常。
问题是当我使用此代码制作自己的窗口时:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
window.makeKeyAndVisible()
window.rootViewController = ViewController()
self.window = window
return true
}
和
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
window.makeKeyAndVisible()
window.rootViewController = ViewController()
}
我的 collectionView 代码出现此错误:
Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
问题:
有没有办法创建自己的 UIWindow 并仍然使用故事板?
P.S 如果您想知道为什么我不只使用故事板而不是制作自己的 UIWIndow,那是因为我已经完全以编程方式创建了我的应用程序,我只需要使用故事板这一次来调整 UICollectionViewCells 的大小。我无法弄清楚如何以编程方式进行,但我已经在情节提要上弄清楚了。
【问题讨论】:
-
您是否尝试从 appDelegate 和 scenedelegate 设置根视图控制器?
标签: swift