Xcode 11,使用 Main.storyboard 修复的主界面 [重复]

Posted

技术标签:

【中文标题】Xcode 11,使用 Main.storyboard 修复的主界面 [重复]【英文标题】:Xcode 11, Main Interface fixed with Main.storyboard [duplicate] 【发布时间】:2019-09-24 07:11:07 【问题描述】:

主界面不会随着 Xcode 11 中的另一个故事板而改变,它总是在用另一个故事板改变后与 Main.storyboard 一起运行,我在新故事板中使用视图控制器后检查了“是初始视图控制器”。

我在 Xcode 10 中测试过,它运行良好。

我是否错过了 Xcode 11 中的某些内容?

在 plist 中。

【问题讨论】:

你在项目设置里改了吗? @iPeter 是的,它不工作。 你能用初始视图控制器展示你的故事板吗? @iPeter 添加了.. 【参考方案1】:

Swift 5 与 iOS 13

Application 下的 info.plist 文件中需要进行更多更改 场景清单组。

Application Scene Manifest中更改名称。

补充: 如果您想创建没有情节提要的根窗口,则需要从 Info.plist 中删除 Main storyboard file base nameStoryboard Name 项,并以编程方式在 @ 中创建窗口987654325@:

class SceneDelegate: UIResponder, UIWindowSceneDelegate 

    var window: UIWindow?

    @available(ios 13.0, *)
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else  return 
        window = UIWindow(windowScene: windowScene)
        // continue to create view controllers for window
    

    //......

【讨论】:

是否可以提供类似 $(PRODUCT_NAME) = bundle name, for storyboard name 的东西? 我觉得非常令人沮丧的是,为了更改主界面入口点,在 xcode 中实际上需要更改 3 项才能使其正常工作。从之前版本的 swift 中,这个“场景清单”从未存在过......我确定苹果有理由添加另一个必填字段来更改......但仍然令人沮丧......方式比它必须要复杂得多 如果我想动态改变它怎么办 “Info.plist”文件中的 2 个条目的目的是什么?要么它必须采用场景配置中的一个,要么来自“主故事板文件基本名称” 你好,如果我不从 info.plist 中删除这 2 个呢?但我改变了 SceneDelegate。会不会是令人不满意的布局(不能按预期工作)。【参考方案2】:

您能否将“主故事板文件基本名称”更改为您的故事板文件名。

【讨论】:

我没听明白。 plist 文件中有一个键,在“目标”-> 自定义 iOS 目标属性“主故事板文件基本名称”下。默认为“主要”。因此,如果您想要任何其他情节提要,请将“Main”替换为您的文件名。 通过从主界面选择storyboard,在plist中,它会自动改变。虽然我已经编辑了我的问题并添加了 plist 的屏幕截图。

以上是关于Xcode 11,使用 Main.storyboard 修复的主界面 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 XCode 8 修复 iOS 11 崩溃

Xcode 11.2 缺少模拟器 [重复]

Xcode 11,使用 Main.storyboard 修复的主界面 [重复]

使用 Xcode 11 构建 iOS 应用程序后,速度要慢 20 倍以上

使用 Xcode 11 模拟位置

Xcode 11 在 AppExtension 中使用框架