使用场景代理在iOS 13中创建多个故事板文件

3
我刚刚将SceneDelegate应用于我的旧iOS项目中,该项目有两个故事板- iPhone.storyboard 和 iPad.storyboard。 有AppDelegate.swift和SceneDelegate.swift文件,但是都没有具体的代码-只有空的委托方法。

info.plist file

问题是每次在不同设备上运行 - iPhone或iPad时,我都必须更改故事板名称。我的问题是如何将多个故事板名称设置为info.plist文件的部分。目前当我用iPhone模拟器运行时,它显然会使用文件。

附言:我已经使用和设置了

的值。

2个回答

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

enter image description here

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

然后在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)
}

这对我解决了问题,希望能帮到其他人。


-1
我目前找到的唯一变体是 this,在 SceneDelegate 中设置不同的故事板,而不是在 info.plist 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接