【问题标题】:Multiple storyboard files with scene delegate iOS 13 [duplicate]具有场景委托iOS 13的多个故事板文件[重复]
【发布时间】:2021-03-09 12:58:23
【问题描述】:

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

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

附:我已经用iPhoneiPad 设置了Main storyboard file base nameMain storyboard file base name (iPad) 值。

【问题讨论】:

    标签: ios swift xcode ipad


    【解决方案1】:

    我遇到了这个问题,你需要做的是在 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)
    }
    

    这为我解决了这个问题,我希望这对人们有所帮助。

    【讨论】:

      【解决方案2】:

      我现在发现的唯一变体是this,其中设置不同的故事板是在 SceneDelegate 中完成的。不在 info.plist 中。

      【讨论】:

        猜你喜欢
        • 2015-12-13
        • 1970-01-01
        • 2015-01-14
        • 1970-01-01
        • 2012-04-15
        • 2020-01-30
        • 2020-01-30
        • 1970-01-01
        相关资源
        最近更新 更多