具有场景代理iOS 13的多个情节提要文件

具有场景代理iOS 13的多个情节提要文件,ios,swift,xcode,ipad,Ios,Swift,Xcode,Ipad,我刚刚在我的旧iOS项目中实现了SceneDelegate,它有两个故事板-iPhone.storyboard和iPad.storyboard。 有AppDelegate.swift和SceneDelegate.swift两个没有特定代码的文件-只有空的委托方法 问题是,每当我使用不同的设备类型(iPhone或iPad)运行时,我都必须更改情节提要的名称。我的问题是如何将多个情节提要名称设置为info.plist文件的Application Scene Manifest部分。当我现在用iPho

我刚刚在我的旧iOS项目中实现了SceneDelegate,它有两个故事板-
iPhone.storyboard
iPad.storyboard
。 有
AppDelegate.swift
SceneDelegate.swift
两个没有特定代码的文件-只有空的委托方法

问题是,每当我使用不同的设备类型(iPhone或iPad)运行时,我都必须更改情节提要的名称。我的问题是如何将多个情节提要名称设置为
info.plist
文件的
Application Scene Manifest
部分。当我现在用iPhone模拟器运行时,它显然是用iPad.Storyboard文件运行的


另外,我已经用
iPhone
iPad
设置了
Main storyboard file base name
Main storyboard file base name(iPad)
值。目前我发现的唯一变体是在SceneDelegate中设置不同的故事板。不在info.plist。

我遇到了这个问题,您需要做的是在info.plist中添加一个新的场景配置。我使用默认配置加载iPhone的故事板,并添加了一个新配置来加载我的iPad故事板

将“启用多个窗口”更改为“是”

然后在AppDelegate.swift中-

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
    // Called when a new scene session is being created.
    // Use this method to select a configuration to create the new scene with.
    
    var config = "Default Configuration"
    
    if IS_IPAD {
        print("IPAD - LOADING IPAD CONFIG - \(config)")
        config = "ipad Configuration"
    }
    print("LOADING CONFIG - \(config)")
    
    return UISceneConfiguration(name: config, sessionRole: connectingSceneSession.role)
}
这为我解决了问题,我希望这能帮助人们